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个字符……