Tuesday, 7 October 2014

vb.net WebRequest Post giving 400 Bad Request when containing ampersand



I'm running into an issue with WebRequest when the POST contains an ampersand. When attempting to get the response, I am being thrown a 400 Bad Request error. I've tried HttpServerUtility.UrlEncode on the postData variable, but that throws an error as well.


Here is my code:



Dim request As WebRequest
Dim postData As String = String.Empty
Dim byteArray As Byte()
Dim dataStream As Stream = Nothing
Dim response As WebResponse = Nothing

Dim reader As StreamReader = Nothing
Dim responseFromServer As String
request = WebRequest.Create(_strWSURL)
request.Method = "POST"
postData = "p_input_xml_doc=<?xml version=""1.0"" encoding=""UTF-8""?>
<XMLRootNode>
<Transactions>
<Transaction>
<Data>FirstNode</Data>
</Transaction>
<Transaction>
<Data>Second&amp;Node</Data>
</Transaction>
</Transactions
</XMLRootNode>"

byteArray = Encoding.UTF8.GetBytes(postData)
request.ContentType = "text/xml; encoding='utf-8'"
request.ContentLength = byteArray.Length
dataStream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
response = request.GetResponse()'<--Thorws "The remote server returned an error: (400) Bad Request."

dataStream = response.GetResponseStream()
reader = New StreamReader(dataStream)
responseFromServer = reader.ReadToEnd()

No comments:

Post a Comment