C # - Как сделать HTTP-вызов - PullRequest
       39

C # - Как сделать HTTP-вызов

26 голосов
/ 07 октября 2011

Я хотел сделать HTTP-вызов на сайт. Мне просто нужно нажать на URL и не хочу загружать или скачивать какие-либо данные. Какой самый простой и быстрый способ сделать это.

Я попробовал приведенный ниже код, но он медленный, и после 2-го повторного запроса он просто уходит в таймаут на 59 секунд и затем возобновляется:

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();

Является ли использование WebClient более эффективным ??

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

Я использую .NET ver 3.5

Ответы [ 3 ]

45 голосов
/ 07 октября 2011

У вас есть кое-что еще, если вы действительно пытаетесь позвонить на сайт. Все, что вам нужно, это:

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

Если вы не хотите ждать ответа, вы можете посмотреть BeginGetResponse , чтобы сделать его асинхронным.

10 голосов
/ 07 октября 2011

Если вы не хотите загружать какие-либо данные, вы должны использовать:

webRequest.Method = "GET";

Если вы действительно не хотите получать какие-либо данные назад (например, если вы просто хотите проверить, еслистраница доступна) используйте:

webRequest.Method = "HEAD";

В любом случае вместо webRequest.GetRequestStream() используйте:

WebResponse myWebResponse = webRequest.GetResponse();
5 голосов
/ 07 октября 2011

WebClient является более коротким и кратким синтаксисом, но за кулисами он использует WebRequest, поэтому с точки зрения производительности он не будет быстрее, он будет эквивалентен. Если вы хотите, чтобы это было быстрее, вам придется улучшить серверный скрипт или вашу сетевую инфраструктуру. Проблема не на стороне клиента.

...