2011-10-14 54 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