use*_*359 2 c# sockets webrequest webresponse httpwebrequest
所以我正在制作一个几乎可以制作批量HttpWebRequests的程序.在这个程序中,速度是主要的.如果我能找到将HttpWebRequests增加甚至毫秒的方法,那就非常好了.
好的,我的问题是这样的:我有一个方法对一个站点发出HttpWebRequest(GET请求),另一个方法是对一个主机发出一个POST HttpWebRequest(略有不同的URL,但是同一个主机),这个方法叫做AFTER每隔一段时间使用第一种方法.
在我的第一个方法(GET请求,假设方法A)中,我在读取响应主体后关闭了WebResponse.让这个WebResponse保持打开状态,然后调用POST方法(让我们说方法B),或者我应该如何实现它,从方法A关闭WebResponse是不是更快?
示例代码:
public string MethodA()
{
// Make a HttpWebRequest to a URL like: xxxx.yyyy.com
WebResponse response = request.GetResponse();
string x = ReadResponseBody(response);
response.Close();
if(x.Contains("something"))
MethodB();
}
public void MethodB()
{
// Make a POST HttpWebRequest to a URL like: xxxx.zzzz.com (same host).
WebResponse response = request.GetResponse();
response.Close();
}
Run Code Online (Sandbox Code Playgroud)
那么,我应该保留我的代码,关闭MethodA()中的第一个WebResponse,然后调用MethodB(),还是其他什么?
此外,任何人都可以提供一些关于如何提高速度的提示,因为这是我的程序中最重要的事情,我需要尽可能快.
Jon*_*eet 10
你应该绝对关闭WebResponse- 理想情况下using:
using (WebResponse response = request.GetResponse())
{
string x = ReadResponseBody(response);
}
Run Code Online (Sandbox Code Playgroud)
如果您不关闭响应,框架不知道您已完成响应,并且不会重用该连接.如果你做关闭响应,连接返回到该主机池,并且可以重复使用.
由于每个主机有一个连接限制(可配置),未能关闭响应可能会导致超时或死锁,因为您的进程会等待Web响应最终确定(这将表现得像关闭).你真的不想等待垃圾收集器碰巧你已经完成的响应:)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |