I am using VB.Net. My program is to connect to a remote IPAddress. Once, it
verifies the login information it should display the SessionID and enable
some button . I appreciate your help and thanku in advance
When I run the pgm , I get the error:
Can't parse login information. Namespace Manager or XsltContext needed. This
query has a prefix, variable or userdefined function.
I have added the Try-catch in all my functions. In ParseLoginResponse
function, it catches the above exception.
I am inclding all the functions I am using below:
Private Function SendXmlRequest(ByRef xml As String)
Try
Dim xmpRequest As HttpWebRequest = WebRequest.Create(XmpUrl)
' Instantiate an XmlDocument object to avoid NullReference
exception
Dim xmlDoc As XmlDocument
xmlDoc = New System.Xml.XmlDocument
'System.Xml.XmlDocument(xmldoc = New System.Xml.XmlDocument)
'Dim xmlDoc As XmlDocument = Nothing
'Dim xmlReader As XmlTextReader
'xmlReader = Nothing
xmpRequest.Method = "POST"
xmpRequest.KeepAlive = True
xmpRequest.ContentType = "text/xml"
Dim writer As StreamWriter
writer = New StreamWriter(xmpRequest.GetRequestStream())
writer.Write(xml)
writer.Close()
'Send the request and get the response
Dim HttpWResponse As HttpWebResponse =
CType(xmpRequest.GetResponse(), HttpWebResponse)
'Console.WriteLine("before sending status")
'Get the status and the headers
Dim iStatCode As Integer = HttpWResponse.StatusCode
Dim sStatus As String = iStatCode.ToString()
Console.WriteLine("Status: {0} {1}", sStatus,
HttpWResponse.StatusDescription.ToString())
Console.WriteLine("Request Headers:")
Console.WriteLine(xmpRequest)
Console.WriteLine("Response Headers:")
Console.WriteLine(HttpWResponse.Headers.ToString() )
'feb15
If Not HttpWResponse Is Nothing Then
Dim XmlRead = New
XmlTextReader(HttpWResponse.GetResponseStream())
'Dim xmlDoc As XmlDocument
'xmlDoc = New XmlDocument
'Dim xmlDoc = New XmlDocument
xmlDoc.Load(XmlRead)
Return xmlDoc
Else
Console.WriteLine("try again")
End If
'Get the response stream
Dim strm As Stream = HttpWResponse.GetResponseStream()
'Read the Response stream
Dim encode As Encoding =
System.Text.Encoding.GetEncoding("iso-8859-1")
Dim sr As New StreamReader(strm, encode)
Console.WriteLine("Response: {0}", sr.ReadToEnd())
sr.Close()
'new feb13
'Dim doc As New XmlDocument
'doc.Load(HttpWResponse.GetResponseStream())
'doc.Save(Console.Out)
'end
HttpWResponse.Close()
'Read the response stream
'Dim sr As StreamReader = New StreamReader(strm)
'Dim sText As String = sr.ReadToEnd()
'Console.WriteLine("Response: {0}", sText)
'???Close the stream
'strm.Close()
'Clean up
'xmpRequest = Nothing
'HttpWResponse = Nothing
'MyCredentialCache = Nothing
'myCred = Nothing
'strm = Nothing
'sr = Nothing
'Feb14
'If sStatus = 200 Then
'The Http Request/Response was successful, now we need to check
the XML that was returned for errors
'If Not RequestHasErrrors(xmpRequest.responseRext) Then
'The overall request was successful so begin to parse the
response XML
'SendXmlRequest = xmpRequest.responseXml
'End If
'Else
'End If
'End If
'Else
'Call MsgBox("There was an error. ReadyState = " &
xmpRequest.readyState)
'End If
Catch ex As NullReferenceException
MsgBox("Can't Request page" & vbCrLf & ex.Message)
End Try
End Function
Private Function RequestHasErrors(ByRef xml As String) As Boolean
' Check for the high level error Xml in any response before
' trying to parse the results.
If InStr(xml, "<Response><Error>") >= 1 Then
RequestHasErrors = True
End If
End Function
Private Function ParseLoginResponse(ByRef loginDom As XmlDocument) As
Boolean
' See if the login was successful. If so, get the SessionID.
' Otherwise, log the error.
Try
ParseLoginResponse = False
' Setup the Dom to use XPath queries and also setup
' an Xml namespace prefix for use in the XPath queries.
'Call loginDom.setProperty("SelectionLanguage", "XPath")
'loginDom.setProperty("SelectionNamespaces",
"xmlns:ns='urn:schemas-tms:LoginResponse'")
Dim filterDoc As New XmlDocument
'Feb14
'Instantiate an XmlNamespaceManager object
'Dim nsmgr As XmlNamespaceManager
'nsmgr = New XmlNamespaceManager(filterDoc.NameTable)
'Add the namespaces used in books.xml to the XmlNamespaceManager.
'nsmgr.AddNamespace("SelectionLanguage", "XPath")
'nsmgr.AddNamespace("SelectionNamespaces",
"xmlns:ns='urn:schemas -tms:LoginResponse'")
Dim node As XmlNode
node = loginDom.SelectSingleNode("ns:LoginResponse/ns:Status")
'node = New XmlDocument
If node.Value = "Success" Then
' The login was 100% successful so get the SessionID.
'new Feb 14
'If node Is Nothing Then
'for testing
Console.WriteLine("Login successful: " & node.Value)
node =
loginDom.SelectSingleNode("ns:LoginResponse/ns:SessionID")
'Dim resultImport As XmlNode
'resultImport = filterDoc.ImportNode(node, True)
'filterDoc.AppendChild(resultImport)
'Return True
'g_SessionID = node.Value
ParseLoginResponse = True
'Console.WriteLine("Login successful: " & node.Value)
'Feb14
Else
'The login was not 100% successful
node =
loginDom.SelectSingleNode("ns:LoginResponse/ns:SystemMessage")
Console.WriteLine("Login unsuccessful: " & node.InnerText)
End If
Catch ex As Exception
MsgBox("Can't parse login information" & vbCrLf & ex.Message)
End Try
'Feb13()
'Return True
'Else
' The login was not 100% successful.
'node = loginDom.SelectSingleNode("ns:LoginResponse/ns:SystemMessage")
'Console.WriteLine("Login unsuccessful: " & node.text)
'End If
'Feb13
'loginDom = Nothing
'node = Nothing
End Function
End Class 4 3925
Use the overload of SelectSingleNode that takes the namespace manager that
you set up.
"XML newbie: Urgent pls help!"
<XM********************@discussions.microsoft.co m> wrote in message
news:FD**********************************@microsof t.com... I am using VB.Net. My program is to connect to a remote IPAddress. Once, it verifies the login information it should display the SessionID and enable some button . I appreciate your help and thanku in advance
When I run the pgm , I get the error: Can't parse login information. Namespace Manager or XsltContext needed. This query has a prefix, variable or userdefined function.
I have added the Try-catch in all my functions. In ParseLoginResponse function, it catches the above exception.
I am inclding all the functions I am using below:
Private Function SendXmlRequest(ByRef xml As String)
Try
Dim xmpRequest As HttpWebRequest = WebRequest.Create(XmpUrl)
' Instantiate an XmlDocument object to avoid NullReference exception
Dim xmlDoc As XmlDocument
xmlDoc = New System.Xml.XmlDocument
'System.Xml.XmlDocument(xmldoc = New System.Xml.XmlDocument)
'Dim xmlDoc As XmlDocument = Nothing
'Dim xmlReader As XmlTextReader
'xmlReader = Nothing
xmpRequest.Method = "POST"
xmpRequest.KeepAlive = True
xmpRequest.ContentType = "text/xml"
Dim writer As StreamWriter
writer = New StreamWriter(xmpRequest.GetRequestStream())
writer.Write(xml)
writer.Close()
'Send the request and get the response
Dim HttpWResponse As HttpWebResponse = CType(xmpRequest.GetResponse(), HttpWebResponse)
'Console.WriteLine("before sending status")
'Get the status and the headers
Dim iStatCode As Integer = HttpWResponse.StatusCode
Dim sStatus As String = iStatCode.ToString()
Console.WriteLine("Status: {0} {1}", sStatus, HttpWResponse.StatusDescription.ToString())
Console.WriteLine("Request Headers:")
Console.WriteLine(xmpRequest)
Console.WriteLine("Response Headers:")
Console.WriteLine(HttpWResponse.Headers.ToString() )
'feb15
If Not HttpWResponse Is Nothing Then
Dim XmlRead = New XmlTextReader(HttpWResponse.GetResponseStream())
'Dim xmlDoc As XmlDocument
'xmlDoc = New XmlDocument
'Dim xmlDoc = New XmlDocument
xmlDoc.Load(XmlRead)
Return xmlDoc
Else
Console.WriteLine("try again") End If
'Get the response stream
Dim strm As Stream = HttpWResponse.GetResponseStream()
'Read the Response stream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("iso-8859-1")
Dim sr As New StreamReader(strm, encode)
Console.WriteLine("Response: {0}", sr.ReadToEnd())
sr.Close()
'new feb13
'Dim doc As New XmlDocument
'doc.Load(HttpWResponse.GetResponseStream())
'doc.Save(Console.Out) 'end
HttpWResponse.Close()
'Read the response stream
'Dim sr As StreamReader = New StreamReader(strm)
'Dim sText As String = sr.ReadToEnd()
'Console.WriteLine("Response: {0}", sText) '???Close the stream
'strm.Close() 'Clean up
'xmpRequest = Nothing
'HttpWResponse = Nothing
'MyCredentialCache = Nothing
'myCred = Nothing
'strm = Nothing
'sr = Nothing 'Feb14
'If sStatus = 200 Then
'The Http Request/Response was successful, now we need to check the XML that was returned for errors
'If Not RequestHasErrrors(xmpRequest.responseRext) Then
'The overall request was successful so begin to parse the response XML 'SendXmlRequest = xmpRequest.responseXml
'End If 'Else 'End If
'End If
'Else
'Call MsgBox("There was an error. ReadyState = " & xmpRequest.readyState)
'End If
Catch ex As NullReferenceException MsgBox("Can't Request page" & vbCrLf & ex.Message) End Try End Function Private Function RequestHasErrors(ByRef xml As String) As Boolean
' Check for the high level error Xml in any response before
' trying to parse the results.
If InStr(xml, "<Response><Error>") >= 1 Then
RequestHasErrors = True
End If
End Function Private Function ParseLoginResponse(ByRef loginDom As XmlDocument) As Boolean
' See if the login was successful. If so, get the SessionID.
' Otherwise, log the error. Try
ParseLoginResponse = False ' Setup the Dom to use XPath queries and also setup
' an Xml namespace prefix for use in the XPath queries.
'Call loginDom.setProperty("SelectionLanguage", "XPath")
'loginDom.setProperty("SelectionNamespaces", "xmlns:ns='urn:schemas-tms:LoginResponse'") Dim filterDoc As New XmlDocument 'Feb14
'Instantiate an XmlNamespaceManager object
'Dim nsmgr As XmlNamespaceManager
'nsmgr = New XmlNamespaceManager(filterDoc.NameTable) 'Add the namespaces used in books.xml to the XmlNamespaceManager.
'nsmgr.AddNamespace("SelectionLanguage", "XPath") 'nsmgr.AddNamespace("SelectionNamespaces", "xmlns:ns='urn:schemas -tms:LoginResponse'") Dim node As XmlNode
node = loginDom.SelectSingleNode("ns:LoginResponse/ns:Status")
'node = New XmlDocument If node.Value = "Success" Then
' The login was 100% successful so get the SessionID. 'new Feb 14
'If node Is Nothing Then 'for testing
Console.WriteLine("Login successful: " & node.Value)
node = loginDom.SelectSingleNode("ns:LoginResponse/ns:SessionID")
'Dim resultImport As XmlNode
'resultImport = filterDoc.ImportNode(node, True)
'filterDoc.AppendChild(resultImport)
'Return True
'g_SessionID = node.Value
ParseLoginResponse = True
'Console.WriteLine("Login successful: " & node.Value)
'Feb14 Else
'The login was not 100% successful
node = loginDom.SelectSingleNode("ns:LoginResponse/ns:SystemMessage")
Console.WriteLine("Login unsuccessful: " & node.InnerText)
End If Catch ex As Exception
MsgBox("Can't parse login information" & vbCrLf & ex.Message)
End Try
'Feb13()
'Return True
'Else
' The login was not 100% successful.
'node = loginDom.SelectSingleNode("ns:LoginResponse/ns:SystemMessage")
'Console.WriteLine("Login unsuccessful: " & node.text)
'End If
'Feb13
'loginDom = Nothing
'node = Nothing
End Function End Class
Thanks for yur response. But, I didn't get it. Could u elaborate more on it.
"Nick Hounsome" wrote: Use the overload of SelectSingleNode that takes the namespace manager that you set up.
"XML newbie: Urgent pls help!" <XM********************@discussions.microsoft.co m> wrote in message news:FD**********************************@microsof t.com...I am using VB.Net. My program is to connect to a remote IPAddress. Once, it verifies the login information it should display the SessionID and enable some button . I appreciate your help and thanku in advance
When I run the pgm , I get the error: Can't parse login information. Namespace Manager or XsltContext needed. This query has a prefix, variable or userdefined function.
I have added the Try-catch in all my functions. In ParseLoginResponse function, it catches the above exception.
I am inclding all the functions I am using below:
Private Function SendXmlRequest(ByRef xml As String)
Try
Dim xmpRequest As HttpWebRequest = WebRequest.Create(XmpUrl)
' Instantiate an XmlDocument object to avoid NullReference exception
Dim xmlDoc As XmlDocument
xmlDoc = New System.Xml.XmlDocument
'System.Xml.XmlDocument(xmldoc = New System.Xml.XmlDocument)
'Dim xmlDoc As XmlDocument = Nothing
'Dim xmlReader As XmlTextReader
'xmlReader = Nothing
xmpRequest.Method = "POST"
xmpRequest.KeepAlive = True
xmpRequest.ContentType = "text/xml"
Dim writer As StreamWriter
writer = New StreamWriter(xmpRequest.GetRequestStream())
writer.Write(xml)
writer.Close()
'Send the request and get the response
Dim HttpWResponse As HttpWebResponse = CType(xmpRequest.GetResponse(), HttpWebResponse)
'Console.WriteLine("before sending status")
'Get the status and the headers
Dim iStatCode As Integer = HttpWResponse.StatusCode
Dim sStatus As String = iStatCode.ToString()
Console.WriteLine("Status: {0} {1}", sStatus, HttpWResponse.StatusDescription.ToString())
Console.WriteLine("Request Headers:")
Console.WriteLine(xmpRequest)
Console.WriteLine("Response Headers:")
Console.WriteLine(HttpWResponse.Headers.ToString() )
'feb15
If Not HttpWResponse Is Nothing Then
Dim XmlRead = New XmlTextReader(HttpWResponse.GetResponseStream())
'Dim xmlDoc As XmlDocument
'xmlDoc = New XmlDocument
'Dim xmlDoc = New XmlDocument
xmlDoc.Load(XmlRead)
Return xmlDoc
Else
Console.WriteLine("try again") End If
'Get the response stream
Dim strm As Stream = HttpWResponse.GetResponseStream()
'Read the Response stream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("iso-8859-1")
Dim sr As New StreamReader(strm, encode)
Console.WriteLine("Response: {0}", sr.ReadToEnd())
sr.Close()
'new feb13
'Dim doc As New XmlDocument
'doc.Load(HttpWResponse.GetResponseStream())
'doc.Save(Console.Out) 'end
HttpWResponse.Close()
'Read the response stream
'Dim sr As StreamReader = New StreamReader(strm)
'Dim sText As String = sr.ReadToEnd()
'Console.WriteLine("Response: {0}", sText) '???Close the stream
'strm.Close() 'Clean up
'xmpRequest = Nothing
'HttpWResponse = Nothing
'MyCredentialCache = Nothing
'myCred = Nothing
'strm = Nothing
'sr = Nothing 'Feb14
'If sStatus = 200 Then
'The Http Request/Response was successful, now we need to check the XML that was returned for errors
'If Not RequestHasErrrors(xmpRequest.responseRext) Then
'The overall request was successful so begin to parse the response XML 'SendXmlRequest = xmpRequest.responseXml
'End If 'Else 'End If
'End If
'Else
'Call MsgBox("There was an error. ReadyState = " & xmpRequest.readyState)
'End If
Catch ex As NullReferenceException MsgBox("Can't Request page" & vbCrLf & ex.Message) End Try End Function Private Function RequestHasErrors(ByRef xml As String) As Boolean
' Check for the high level error Xml in any response before
' trying to parse the results.
If InStr(xml, "<Response><Error>") >= 1 Then
RequestHasErrors = True
End If
End Function Private Function ParseLoginResponse(ByRef loginDom As XmlDocument) As Boolean
' See if the login was successful. If so, get the SessionID.
' Otherwise, log the error. Try
ParseLoginResponse = False ' Setup the Dom to use XPath queries and also setup
' an Xml namespace prefix for use in the XPath queries.
'Call loginDom.setProperty("SelectionLanguage", "XPath")
'loginDom.setProperty("SelectionNamespaces", "xmlns:ns='urn:schemas-tms:LoginResponse'") Dim filterDoc As New XmlDocument 'Feb14
'Instantiate an XmlNamespaceManager object
'Dim nsmgr As XmlNamespaceManager
'nsmgr = New XmlNamespaceManager(filterDoc.NameTable) 'Add the namespaces used in books.xml to the XmlNamespaceManager.
'nsmgr.AddNamespace("SelectionLanguage", "XPath") http://msdn.microsoft.com/library/de...nodetopic2.asp
You seem to have been part way there but you commented out the
XmlNameSpaceManager that you need to give as the second arg
"XML newbie: Urgent pls help!"
<XM********************@discussions.microsoft.co m> wrote in message
news:03**********************************@microsof t.com... Thanks for yur response. But, I didn't get it. Could u elaborate more on it.
"Nick Hounsome" wrote:
Use the overload of SelectSingleNode that takes the namespace manager that you set up.
"XML newbie: Urgent pls help!" <XM********************@discussions.microsoft.co m> wrote in message news:FD**********************************@microsof t.com... >I am using VB.Net. My program is to connect to a remote IPAddress. Once, >it > verifies the login information it should display the SessionID and > enable > some button . I appreciate your help and thanku in advance > > When I run the pgm , I get the error: > Can't parse login information. Namespace Manager or XsltContext needed. > This > query has a prefix, variable or userdefined function. > > I have added the Try-catch in all my functions. In ParseLoginResponse > function, it catches the above exception. > > I am inclding all the functions I am using below: > > Private Function SendXmlRequest(ByRef xml As String) > > Try > > > Dim xmpRequest As HttpWebRequest = WebRequest.Create(XmpUrl) > > ' Instantiate an XmlDocument object to avoid NullReference > exception > > Dim xmlDoc As XmlDocument > > xmlDoc = New System.Xml.XmlDocument > > 'System.Xml.XmlDocument(xmldoc = New System.Xml.XmlDocument) > > > 'Dim xmlDoc As XmlDocument = Nothing > > > 'Dim xmlReader As XmlTextReader > > 'xmlReader = Nothing > > > xmpRequest.Method = "POST" > > > xmpRequest.KeepAlive = True > > xmpRequest.ContentType = "text/xml" > > Dim writer As StreamWriter > > writer = New StreamWriter(xmpRequest.GetRequestStream()) > > writer.Write(xml) > > writer.Close() > > > 'Send the request and get the response > > Dim HttpWResponse As HttpWebResponse = > CType(xmpRequest.GetResponse(), HttpWebResponse) > > > 'Console.WriteLine("before sending status") > > > 'Get the status and the headers > > > Dim iStatCode As Integer = HttpWResponse.StatusCode > > Dim sStatus As String = iStatCode.ToString() > > > Console.WriteLine("Status: {0} {1}", sStatus, > HttpWResponse.StatusDescription.ToString()) > > Console.WriteLine("Request Headers:") > > Console.WriteLine(xmpRequest) > > Console.WriteLine("Response Headers:") > > Console.WriteLine(HttpWResponse.Headers.ToString() ) > > > 'feb15 > > If Not HttpWResponse Is Nothing Then > > Dim XmlRead = New > XmlTextReader(HttpWResponse.GetResponseStream()) > > 'Dim xmlDoc As XmlDocument > > 'xmlDoc = New XmlDocument > > 'Dim xmlDoc = New XmlDocument > > xmlDoc.Load(XmlRead) > > Return xmlDoc > > > Else > > Console.WriteLine("try again") > > > > End If > > > 'Get the response stream > > Dim strm As Stream = HttpWResponse.GetResponseStream() > > > 'Read the Response stream > > Dim encode As Encoding = > System.Text.Encoding.GetEncoding("iso-8859-1") > > Dim sr As New StreamReader(strm, encode) > > Console.WriteLine("Response: {0}", sr.ReadToEnd()) > > sr.Close() > > 'new feb13 > > 'Dim doc As New XmlDocument > > 'doc.Load(HttpWResponse.GetResponseStream()) > > 'doc.Save(Console.Out) > > > > 'end > > HttpWResponse.Close() > > > 'Read the response stream > > 'Dim sr As StreamReader = New StreamReader(strm) > > 'Dim sText As String = sr.ReadToEnd() > > 'Console.WriteLine("Response: {0}", sText) > > > > '???Close the stream > > 'strm.Close() > > > > 'Clean up > > 'xmpRequest = Nothing > > 'HttpWResponse = Nothing > > 'MyCredentialCache = Nothing > > 'myCred = Nothing > > 'strm = Nothing > > 'sr = Nothing > > > > 'Feb14 > > 'If sStatus = 200 Then > > 'The Http Request/Response was successful, now we need to > check > the XML that was returned for errors > > 'If Not RequestHasErrrors(xmpRequest.responseRext) Then > > 'The overall request was successful so begin to parse the > response XML > > > > 'SendXmlRequest = xmpRequest.responseXml > > 'End If > > > > 'Else > > > > 'End If > > > 'End If > > 'Else > > 'Call MsgBox("There was an error. ReadyState = " & > xmpRequest.readyState) > > 'End If > > > > > > Catch ex As NullReferenceException > > > > MsgBox("Can't Request page" & vbCrLf & ex.Message) > > > > End Try > > > > End Function > > > > Private Function RequestHasErrors(ByRef xml As String) As Boolean > > ' Check for the high level error Xml in any response before > > ' trying to parse the results. > > If InStr(xml, "<Response><Error>") >= 1 Then > > RequestHasErrors = True > > End If > > End Function > > > > Private Function ParseLoginResponse(ByRef loginDom As XmlDocument) > As > Boolean > > ' See if the login was successful. If so, get the SessionID. > > ' Otherwise, log the error. > > > > Try > > > ParseLoginResponse = False > > > > ' Setup the Dom to use XPath queries and also setup > > ' an Xml namespace prefix for use in the XPath queries. > > 'Call loginDom.setProperty("SelectionLanguage", "XPath") > > 'loginDom.setProperty("SelectionNamespaces", > "xmlns:ns='urn:schemas-tms:LoginResponse'") > > > > Dim filterDoc As New XmlDocument > > > > 'Feb14 > > 'Instantiate an XmlNamespaceManager object > > 'Dim nsmgr As XmlNamespaceManager > > 'nsmgr = New XmlNamespaceManager(filterDoc.NameTable) > > > > 'Add the namespaces used in books.xml to the > XmlNamespaceManager. > > 'nsmgr.AddNamespace("SelectionLanguage", "XPath") > > >
Thanks a lot for your quick and correct response . I appreciate it by
my heart.God bless u.
I fixed the error by:
Dim nsmgr As XmlNamespaceManager
nsmgr = New XmlNamespaceManager(filterDoc.NameTable)
msmgr.AddNamespace("ns", "urn:schemas -tms:LoginResponse")
loginDom.SelectSingleNode("ns:LoginResponse/ns:Status", nsmgr
Now, when I run my program, I don't get that error, but another: "Can't
parse Login information. Object reference not set to an instance of an
object".
Since, I have the exception"Can't parse Login information", in
ParseLoginResponse function, but I have noticed, when I compile the program,
I get the warning" Function SendXmlRequest doesn't return a value on all code
paths. A NullReference exception could occur at runtime'. Do u think, I am
getting the above error due to
"SendXmlRequest function", if yes/no how should I fix it.
Once again, I appreciate and thankyou in advance for your help.God bless u.
"Nick Hounsome" wrote: http://msdn.microsoft.com/library/de...nodetopic2.asp
You seem to have been part way there but you commented out the XmlNameSpaceManager that you need to give as the second arg
"XML newbie: Urgent pls help!" <XM********************@discussions.microsoft.co m> wrote in message news:03**********************************@microsof t.com... Thanks for yur response. But, I didn't get it. Could u elaborate more on it.
"Nick Hounsome" wrote:
Use the overload of SelectSingleNode that takes the namespace manager that you set up.
"XML newbie: Urgent pls help!" <XM********************@discussions.microsoft.co m> wrote in message news:FD**********************************@microsof t.com... >I am using VB.Net. My program is to connect to a remote IPAddress. Once, >it > verifies the login information it should display the SessionID and > enable > some button . I appreciate your help and thanku in advance > > When I run the pgm , I get the error: > Can't parse login information. Namespace Manager or XsltContext needed. > This > query has a prefix, variable or userdefined function. > > I have added the Try-catch in all my functions. In ParseLoginResponse > function, it catches the above exception. > > I am inclding all the functions I am using below: > > Private Function SendXmlRequest(ByRef xml As String) > > Try > > > Dim xmpRequest As HttpWebRequest = WebRequest.Create(XmpUrl) > > ' Instantiate an XmlDocument object to avoid NullReference > exception > > Dim xmlDoc As XmlDocument > > xmlDoc = New System.Xml.XmlDocument > > 'System.Xml.XmlDocument(xmldoc = New System.Xml.XmlDocument) > > > 'Dim xmlDoc As XmlDocument = Nothing > > > 'Dim xmlReader As XmlTextReader > > 'xmlReader = Nothing > > > xmpRequest.Method = "POST" > > > xmpRequest.KeepAlive = True > > xmpRequest.ContentType = "text/xml" > > Dim writer As StreamWriter > > writer = New StreamWriter(xmpRequest.GetRequestStream()) > > writer.Write(xml) > > writer.Close() > > > 'Send the request and get the response > > Dim HttpWResponse As HttpWebResponse = > CType(xmpRequest.GetResponse(), HttpWebResponse) > > > 'Console.WriteLine("before sending status") > > > 'Get the status and the headers > > > Dim iStatCode As Integer = HttpWResponse.StatusCode > > Dim sStatus As String = iStatCode.ToString() > > > Console.WriteLine("Status: {0} {1}", sStatus, > HttpWResponse.StatusDescription.ToString()) > > Console.WriteLine("Request Headers:") > > Console.WriteLine(xmpRequest) > > Console.WriteLine("Response Headers:") > > Console.WriteLine(HttpWResponse.Headers.ToString() ) > > > 'feb15 > > If Not HttpWResponse Is Nothing Then > > Dim XmlRead = New > XmlTextReader(HttpWResponse.GetResponseStream()) > > 'Dim xmlDoc As XmlDocument > > 'xmlDoc = New XmlDocument > > 'Dim xmlDoc = New XmlDocument > > xmlDoc.Load(XmlRead) > > Return xmlDoc > > > Else > > Console.WriteLine("try again") > > > > End If > > > 'Get the response stream > > Dim strm As Stream = HttpWResponse.GetResponseStream() > > > 'Read the Response stream > > Dim encode As Encoding = > System.Text.Encoding.GetEncoding("iso-8859-1") > > Dim sr As New StreamReader(strm, encode) > > Console.WriteLine("Response: {0}", sr.ReadToEnd()) > > sr.Close() > > 'new feb13 > > 'Dim doc As New XmlDocument > > 'doc.Load(HttpWResponse.GetResponseStream()) > > 'doc.Save(Console.Out) > > > > 'end > > HttpWResponse.Close() > > > 'Read the response stream > > 'Dim sr As StreamReader = New StreamReader(strm) > > 'Dim sText As String = sr.ReadToEnd() > > 'Console.WriteLine("Response: {0}", sText) > > > > '???Close the stream > > 'strm.Close() > > > > 'Clean up > > 'xmpRequest = Nothing > > 'HttpWResponse = Nothing > > 'MyCredentialCache = Nothing > > 'myCred = Nothing > > 'strm = Nothing > > 'sr = Nothing > > > > 'Feb14 > > 'If sStatus = 200 Then > > 'The Http Request/Response was successful, now we need to > check > the XML that was returned for errors > > 'If Not RequestHasErrrors(xmpRequest.responseRext) Then > > 'The overall request was successful so begin to parse the > response XML > > > > 'SendXmlRequest = xmpRequest.responseXml > > 'End If > > > > 'Else > > > > 'End If > > > 'End If > > 'Else > > 'Call MsgBox("There was an error. ReadyState = " & > xmpRequest.readyState) > > 'End If > > > > > > Catch ex As NullReferenceException > > > > MsgBox("Can't Request page" & vbCrLf & ex.Message) > > > > End Try > > > > End Function > > > > Private Function RequestHasErrors(ByRef xml As String) As Boolean > > ' Check for the high level error Xml in any response before > > ' trying to parse the results. > > If InStr(xml, "<Response><Error>") >= 1 Then > > RequestHasErrors = True > > End If > > End Function > > > > Private Function ParseLoginResponse(ByRef loginDom As XmlDocument) > As > Boolean > > ' See if the login was successful. If so, get the SessionID. > > ' Otherwise, log the error. > > > > Try > > > ParseLoginResponse = False > > > > ' Setup the Dom to use XPath queries and also setup > > ' an Xml namespace prefix for use in the XPath queries. > > 'Call loginDom.setProperty("SelectionLanguage", "XPath") > > 'loginDom.setProperty("SelectionNamespaces", > "xmlns:ns='urn:schemas-tms:LoginResponse'") > > > > Dim filterDoc As New XmlDocument > > This discussion thread is closed Replies have been disabled for this discussion. Similar topics
3 posts
views
Thread by Leonard T. Armstrong |
last post: by
|
3 posts
views
Thread by Mike Dickens |
last post: by
|
4 posts
views
Thread by David Blickstein |
last post: by
|
7 posts
views
Thread by Kevin Newman |
last post: by
|
2 posts
views
Thread by Rick |
last post: by
|
8 posts
views
Thread by Alpha |
last post: by
|
reply
views
Thread by XML newbie: Urgent pls help! |
last post: by
|
10 posts
views
Thread by Andy Fish |
last post: by
| | | | | | | | | | | |