HttpWebRequest возвращает WebResponse со странными числами - PullRequest
0 голосов
/ 14 октября 2011

У меня странная проблема.Когда я получаю ответ от httpwebresquest, некоторые цифры появляются в середине HTML-текста.

Например:

841

89620">



Это число 841, которое не должно появлятьсяи как таковые более каждые несколько строк.Даже в начале:

c04




Таким образом, невозможно разобрать 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();

Текст HTML находится в переменной responseString.

Спасибо за любые идеи и предложения.

1 Ответ

1 голос
/ 14 октября 2011

Во-первых, вы предполагаете, что сервер использует UTF8. Вы также не учитываете, сколько байтов вы прочитали (bytesRead = remoteStream.Read(buffer, 0, buffer.Length)), а просто конвертируете в весь буфер в строку (enc.GetString(buffer)). Это должно быть что-то вроде enc.GetString(buffer,0,bytesRead)

PS: проверка bytesRead>=0 также может потребоваться

...