- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
由于某种超出我理解的原因,对特定网站 ( https://learningnetwork.cisco.com/people/mrollins?view=profile ) 的请求导致了一个 reqsponse 对象,其响应流包含该网站的一个聚合版本。
流在 65536 字节后结束,等于 2^16 字节。我认为这是一个可疑的整数。请求提示内部服务器错误,我对此感到沮丧,因为我已经验证了网络浏览器能够理解此响应,并且完整的 html 包含在服务器的响应中。 (使用 fiddler )
我发现了之前记录的问题 here ,这是不令人满意的,原因很简单,它以这个音符结束:
"I guess I'll have to hope the error doesn't exceed 65536 characters..."
确实如此。
感谢解决方法,或者如果有人知道即将推出的修复程序也不错。
using System;
using System.IO;
using System.Net;
using System.Web.UI;
namespace Example
{
public partial class _Default : Page
{
protected void Page_Load(object senderHidden, EventArgs eHidden)
{
//ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
var cookieContainer = new CookieContainer();
//Encoding enc = Encoding.UTF8;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://learningnetwork.cisco.com/people/mrollins?view=profile");
req.AllowAutoRedirect = false;
req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
req.CookieContainer = cookieContainer;
req.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12";
req.KeepAlive = true;
HttpWebResponse resp = null;
try
{
resp = (HttpWebResponse)req.GetResponse();
}
catch (WebException e)
{
var r = e.Response as HttpWebResponse;
var memstream = Read(r.GetResponseStream());
var wrongLength = memstream.Length;
}
}
public static MemoryStream Read(Stream stream)
{
MemoryStream memStream = new MemoryStream();
byte[] readBuffer = new byte[4096];
int bytesRead;
while ((bytesRead = stream.Read(readBuffer, 0, readBuffer.Length)) > 0)
memStream.Write(readBuffer, 0, bytesRead);
return memStream;
}
}
}
最佳答案
HttpWebRequest 有一个限制网络请求长度的静态属性。在发出请求之前插入的这行代码解决了问题。
HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576;
关于c# - System.Net.HttpWebResponse.GetResponseStream() 在 WebException 中返回截断的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918107/
与来自 HttpWebResponse.GetResponseStream() 的流一起使用的最佳缓冲区大小是多少? 在线示例的大小从 256b 到 5Kb 不等。是什么赋予了?我猜缓冲区大小可能是视
我完全不知道如何解析这个多部分的 httpresponse。这是我收到的格式: MIME-Version: 1.0 RETS-Version: RETS/1.8 RETS-Server: Intere
我试图弄清楚我的网络请求在最终到达最终内容之前被重定向了多少次。 我正在创建我的网络请求,如下所示: var httpRequest = (HttpWebRequest) WebRequest.Cre
我是 c# 的新手,正在制作一个简单的代理来编辑某些 header 。 我已经使用 HttpLisenter 获取请求,然后使用 HttpWebRequest 和 Response 进行编辑、发送和接
这个问题在这里已经有了答案: Garbled httpWebResponse string when posting data to web form programmatically (1 个回答
我有一些代码可以下载我已经使用了一段时间的网页的内容。这段代码工作正常,从来没有出现过问题,现在仍然没有……但是,有一个页面相当大(2MB,没有图像),有 4 个表,分别有 4、20、100、600
我正在开发一个每 5 秒自动查询一次网站的程序。它在过去几天一直运行良好,但今天当我只是重新启动它时,它一直在下面标记的行上抛出 System.ObjectDisposedException。我应该提
我收到来自 HttpWebRequest 的回复(使用修改后的版本 Jeff Richter's CCR wrappers ),然后检查一些 header 以决定是否继续下载。有时我可能不想继续,所以
我遇到了编码问题。当我获得网站的源代码时,我有: 我像这样将编码设置为 UTF8: StreamReader reader = new StreamReader(response.GetRespons
我在下面的代码中收到超时异常。只有这个网站有问题。有什么问题? string ackoURL = "https://www.zomato.com/sk/brno/u-heligonky-z%C3%A1
我正在尝试编写一个重定向检查器,我的解决方案是今天早上刚刚组合在一起的,所以它不是最有效的,但除了一件事之外它可以完成我需要它做的所有事情: 它只在停止前检查两个站点,没有发生错误,它只是在“requ
我正在使用以下代码来读取响应: using (Stream MyResponseStream = hwresponse.GetResponseStream()) { byte[] My
我有一个帮助程序类,它有一个方法,该方法设置为获取信息以生成 HttpWebRequest。目前的方法返回一个 HttpWebResponse。 HttpWebResponse httpRespons
我正在编写自定义 ActionFilterAttribute 并尝试将一些数据直接写入 ASP.NET MVC 3 中的输出流。我正在编写的数据就是我需要响应的所有数据,但是在我的数据渲染 View
使用 Fiddler 运行以下代码显示加号正在转换为某种空白字符。我应该使用什么编码来防止数据被转换?我想保留加号等。 编辑:更新的代码示例 string postData = "test1=test
我们公司与另一家名为 iMatrix 的公司合作,他们拥有用于创建我们自己的表单的 API。他们已经确认我们的请求正在访问他们的服务器,但响应应该以由参数确定的几种方式之一返回。我收到 200 OK
应用正在与 REST 服务对话。Fiddler 显示完整的良好 XML 响应作为 Apps 响应该应用程序位于法属波利尼西亚,在新西兰有一个相同的副本,所以主要嫌疑人似乎在编码,但我们已经检查过了,结
HttpWebResponse.LastModified 是否准确?它总是存在吗?我的项目是创建一种专注的网络爬虫,如果我将使用资源的哈希值或仅使用 HttpWebResponse.LastModif
我有一个用 C# 编写的 ASP.NET 3.5 服务器应用程序。它使用 HttpWebRequest 和 HttpWebResponse 向 REST API 发出出站请求。 我已经设置了一个测试应
我有制作HTTP POST的方法 我这样用try catch调用这个方法 try { returnString = MakePost(gatewayEnpoint, data); retu
我是一名优秀的程序员,十分优秀!