我正在尝试使用HttpWebRequest和HttpWebResponse从网页检索HTML代码。
response = (HttpWebResponse)request.GetResponse();
...
Stream stream = response.GetResponseStream();
响应对象的ContentLength值为106142。当我查看流对象时,它的长度为65536。当使用StreamReader使用ReadToEnd()读取流时,仅返回前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();
例如:Response.ContentLength = 106142
例如:Response.GetResponseStream()。Length = 65536
stream.Length = 65536
pageOutput.Length = 65534 (由于修剪)
是的,代码实际上被截断了。
最佳答案
您可以在System.Net.HttpWebResponse.GetResponseStream() returns truncated body in WebException中找到此主题的答案
您必须管理HttpWebRequest
对象并更改DefaultMaximumErrorResponseLength
属性。
例如 :
HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576;