WebException.Response.GetResponseStream()限制为65536个字符

我正在尝试使用HttpWebRequest和HttpWebResponse从网页中检索HTML代码。

response = (HttpWebResponse)request.GetResponse(); ... Stream stream = response.GetResponseStream(); 

响应对象的ContentLength值为106142.当我查看流对象时,它的长度为65536.使用ReadToEnd()使用StreamReader读取流时,仅返回前65536个字符。

我怎样才能获得整个代码?

编辑:

使用以下代码段:

 catch (WebException ex) { errorMessage = errorMessage + ex.Message; if (ex.Response != null) { if (ex.Response.ContentLength > 0) { using (Stream stream = ex.Response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { string pageOutput = reader.ReadToEnd().Trim(); 

ex.Response.ContentLength = 106142

ex.Response.GetResponseStream()。长度= 65536

stream.Length = 65536

pageOutput.Length = 65534 (由于修剪)

是的,代码实际上是截断的。

您可以在System.Net中找到该主题的答案.HttpWebResponse.GetResponseStream()在WebException中返回截断的主体

您必须管理HttpWebRequest对象并更改DefaultMaximumErrorResponseLength属性。 例如 :

 HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576; 

ReadToEnd就是这样做的,它会读到流的末尾。 我会检查以确保您实际上发送了整个预期的响应。

在exception返回的HttpWebResponse上调用GetResponseStream()方法时似乎存在问题。 当没有例外时,一切都按预期工作。

我想从服务器返回的错误中获取HTML代码。

我想我不得不希望错误不超过65536个字符……