我正在尝试使用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 (因为修剪)
是的,代码实际上已被截断。
答案 0 :(得分:6)
您可以在System.Net.HttpWebResponse.GetResponseStream() returns truncated body in WebException
中找到此主题的答案您必须管理HttpWebRequest
对象并更改DefaultMaximumErrorResponseLength
属性。
例如:
HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576;
答案 1 :(得分:1)
ReadToEnd具体就是这样,它会读到流的末尾。我会检查以确保您确实收到了整个预期的回复。
答案 2 :(得分:-1)
在异常返回的HttpWebResponse上调用GetResponseStream()方法时似乎存在问题。当没有例外时,一切都按预期工作。
我想从服务器返回的错误中获取HTML代码。
我想我不得不希望错误不超过65536个字符......