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

Jas*_*son 6 .net c# webrequest

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

response = (HttpWebResponse)request.GetResponse();
...
Stream stream = response.GetResponseStream();
Run Code Online (Sandbox Code Playgroud)

响应对象的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();
Run Code Online (Sandbox Code Playgroud)

ex.Response.ContentLength = 106142

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

stream.Length = 65536

pageOutput.Length = 65534(由于修剪)

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

小智 7

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

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

HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576;
Run Code Online (Sandbox Code Playgroud)


Jas*_*son -1

对异常返回的 HttpWebResponse 调用 GetResponseStream() 方法时似乎出现问题。当没有例外时,一切都会按预期进行。

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

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