Hello,

I am trying to connect to a XML file that is stored on a device and this XML file is password protected with a username and password.

If I open a web browser and type in the URL to the XML it asks for a username and password (User: admin / Pass: admin) and it loads up the XML file fine.

However, I am now trying to load this XML up in VB.net (2012) but I seem to get an error saying: The remote server returned an error: (401) Unauthorized.

and the following line is where it stops on with the above error:

Code:
Dim response As System.Net.HttpWebResponse = request.GetResponse()
However I know the username and password is correct as I could load it up in the web browser.

I am using the following VB.net code to do this:

Code:
        ' Create a WebRequest to the remote site
        Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://192.168.0.31/data.xml")

        ' NB! Use the following line ONLY if the website is protected
        request.Credentials = New System.Net.NetworkCredential("admin", "admin")

        ' Call the remote site, and parse the data in a response object
        Dim response As System.Net.HttpWebResponse = request.GetResponse()

        ' Check if the response is OK (status code 200)
        If response.StatusCode = System.Net.HttpStatusCode.OK Then

            ' Parse the contents from the response to a stream object
            Dim stream As System.IO.Stream = response.GetResponseStream()
            ' Create a reader for the stream object
            Dim reader As New System.IO.StreamReader(stream)
            ' Read from the stream object using the reader, put the contents in a string
            Dim contents As String = reader.ReadToEnd()
            ' Create a new, empty XML document
            Dim document As New System.Xml.XmlDocument()

            ' Load the contents into the XML document
            document.LoadXml(contents)
            MsgBox(contents)
            ' Now you have a XmlDocument object that contains the XML from the remote site, you can
            ' use the objects and methods in the System.Xml namespace to read the document

        Else
            ' If the call to the remote site fails, you'll have to handle this. There can be many reasons, ie. the 
            ' remote site does not respond (code 404) or your username and password were incorrect (code 401)
            '
            ' See the codes in the System.Net.HttpStatusCode enumerator 

            Throw New Exception("Could not retrieve document from the URL, response code: " & response.StatusCode)

        End If
My App.config file looks like this:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
  </system.net>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
Does anyone know why I am getting the 401 Unauthorized error?