2011-10-07 9 views
22

Chciałem wykonać połączenie HTTP z witryną. Wystarczy kliknąć adres URL i nie chcę przesyłać ani pobierać żadnych danych. Jaki jest najłatwiejszy i najszybszy sposób to zrobić.C# - Jak wykonać połączenie HTTP

Próbowałem poniżej kod, ale jego powolne i monotonne po 2. Żądanie to po prostu idzie do limitu czasu dla 59 secounds i niż CV:

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

używa WebClient bardziej wydajny ??

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

Używam .NET ver 3.5

+0

"Czy korzystanie z WebClient jest bardziej wydajne?" Co powstrzymało cię przed próbowaniem? –

Odpowiedz

40

Masz jakieś dodatkowe rzeczy, jeśli naprawdę chcesz połączyć się z witryną. Wszyscy powinni czego potrzebujesz to:

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

Jeśli nie chcesz czekać na odpowiedź, można spojrzeć na BeginGetResponse zrobić to asynchroniczny.

9

Jeśli nie chcesz, aby przesłać wszystkie dane, należy użyć:

webRequest.Method = "GET"; 

Jeśli naprawdę nie dbam o uzyskanie jakichkolwiek danych wstecz (na przykład, jeśli chcesz sprawdzić, czy strona jest dostępna) użyj:

webRequest.Method = "HEAD"; 

W obu przypadkach zamiast tego z webRequest.GetRequestStream() użytku:

WebResponse myWebResponse = webRequest.GetResponse(); 
5

WebClient jest krótsze i bardziej zwięzłe składni ale za kulisami używa WebRequest, tak pod względem wydajności nie będzie szybciej, będzie to równoznaczne. Jeśli chcesz, aby był szybszy, musisz poprawić skrypt po stronie serwera lub swoją infrastrukturę sieciową. Problem nie leży po stronie klienta.

+1

Dodatkowym sposobem osiągnięcia większej wydajności byłoby użycie metody HTTP "HEAD", szczególnie jeśli żądany plik jest duży. Przypuszczam jednak, że prawdziwy problem leży gdzie indziej. –