2011-10-14 52 views
0

我有一个奇怪的问题。 当我得到httpwebresquest的响应时,一些数字出现在html文本的中间。HttpWebRequest返回奇怪数字的WebResponse

例如:

< INPUT TYPE = “隐藏” 名称= “产品” 值= “7220701403

89620”>



841是一个不应该出现的数字,因此更多的是每隔几行。即使在开头:

C04

< HTML>

<头>


所以,这是不可能的解析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

首先,您假定服务器使用UTF8。您也不会考虑读取多少个字节(bytesRead = remoteStream.Read(buffer, 0, buffer.Length)),而只是将整个缓冲区转换为字符串(enc.GetString(buffer))。它应该像enc.GetString(buffer,0,bytesRead)

PS:一个bytesRead>=0检查也需要

+0

谢谢,我怎样才能检测服务器的编码? – Gabriel

+0

这是在回应。 'ContentEncoding' –

+0

现在它的工作!谢谢!少一个问题 – Gabriel