C# - How to make a HTTP call

2019-01-06 18:59发布

I wanted to make an HTTP call to a website. I just need to hit the URL and dont want to upload or download any data. What is the easiest and fastest way to do it.

I tried below code but its slow and after 2nd repetitive request it just goes into timeout for 59 secounds and than resume:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = fileName.Length;

Stream os = webRequest.GetRequestStream();
os.Write(buffer, 0, buffer.Length);
os.Close();

Is using the WebClient more efficient??

WebClient web = new WebClient();
web.UploadString(address);

I am using .NET ver 3.5

3条回答
相关推荐>>
2楼-- · 2019-01-06 19:18

WebClient is a shorter and more concise syntax but behind the scenes it uses a WebRequest, so in terms of performance it won't be faster, it will be equivalent. If you want it to be faster you will have to improve the server side script or your network infrastructure. The problem is not on the client side.

查看更多
该账号已被封号
3楼-- · 2019-01-06 19:24

If you don't want to upload any data you should use:

webRequest.Method = "GET";

If you really don't care about getting any data back (for instance if you just want to check to see if the page is available) use:

webRequest.Method = "HEAD";

In either case, instead of webRequest.GetRequestStream() use:

WebResponse myWebResponse = webRequest.GetResponse();
查看更多
迷人小祖宗
4楼-- · 2019-01-06 19:34

You've got some extra stuff in there if you're really just trying to call a website. All you should need is:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName);
WebResponse webResp = webRequest.GetResponse();

If you don't want to wait for a response, you may look at BeginGetResponse to make it asynchronous .

查看更多
登录 后发表回答