Domanda

i have a strange problem. When i get the response of a httpwebresquest, some numbers appears in the middle of the html text.

For example:

< input type="hidden" name="productid" value="7220701403

841

89620" >



That 841 is a number that should not appear, and as such are more every few rows. Even at the beginning:

c04

< html >

< head >


So, it's impossible to parse the html.

UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes(postDataString);
request.ContentLength = bytes.Length;
request.ContentType = "application/x-www-form-urlencoded";
request.SendChunked = false;

using (Stream writeStream = request.GetRequestStream())
{
    writeStream.Write(bytes, 0, bytes.Length);
}


response = (HttpWebResponse)request.GetResponse();
Stream remoteStream = response.GetResponseStream();
byte[] buffer = new byte[65536];
int bytesRead = 0;

do
{
    bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
    UTF8Encoding enc = new UTF8Encoding();
    responseString += enc.GetString(buffer);

} while (bytesRead > 0);
remoteStream.Close();

The html text is in variable responseString.

Thanks for any ideas and suggestions.

È stato utile?

Soluzione

First, You assume that the server uses UTF8. You also don't consider how many bytes you read (bytesRead = remoteStream.Read(buffer, 0, buffer.Length))and just convert to whole buffer to string (enc.GetString(buffer)). It should be something like enc.GetString(buffer,0,bytesRead)

PS: A bytesRead>=0 check could also be needed

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top