我创建的程序在不同的网站上每秒执行数百次点击。
HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("SecureControl / / reset / passwordreset");
request.Headers.Add ("Authorization", "Basic asdadsasdas8586");
request.ContentType = "application / x-www-form-urlencoded";
request.Host = "www.xxxxxxxxxx.com";
request.method = "POST";
request.Proxy = null;
request.Headers.Add ("& command = requestnewpassword");
request.Headers.Add ("& application = netconnect");
此代码处于数千次重复循环中,因此单独添加标题会占用CPU过多的内存。
这个想法是将它用作vb6中的winsock。 例如: Winsock1.Sendata AllHTTPHeaders 因此,只发送数据而不添加标题。
我想保存cpu资源,我的问题是,如果有任何方法不声明代码添加不必要的标头。 有一种方法可以存储一个变量的http头文件吗? 并发送更快的方式。
类似:HttpWebRequest request =(HttpWebRequest)ALLHEADERS。
有什么想法吗? 谢谢。
答案 0 :(得分:0)
分享WebHeaderCollection的此实例并将其分配给网络请求'标题属性:
private static readonly WebHeaderCollection Headers = new WebHeaderCollection()
{
{"Foo", "bar"}
};
您还可以在发出任何请求之前将WebRequest.DefaultWebProxy设置为null,因此您不必为每个请求明确地执行此操作。
考虑:
private static readonly WebHeaderCollection Headers = new WebHeaderCollection()
{
{"Authorization", "Basic asdadsasdas8586"},
{"command", "requestnewpassword"},
{"application", "netconnect"}
};
private static void Start(int nRequests)
{
WebRequest.DefaultWebProxy = null;
for (var i = 0; i < nRequests; ++i) {
SendRequest();
}
}
private static bool SendRequest()
{
var request = HttpWebRequest.Create("URL");
request.Headers = Headers;
//Set other properties (like .Method) here
using (var response = (HttpWebResponse)request.GetResponse()) {
//Returns boolean indicating success
return response.StatusCode == HttpStatusCode.OK;
}
}