我正在尝试使用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;

09-07 00:50