2011-10-07 18 views
22

Volevo effettuare una chiamata HTTP a un sito Web. Devo solo premere l'URL e non voglio caricare o scaricare alcun dato. Qual è il modo più semplice e veloce per farlo.C# - Come effettuare una chiamata HTTP

ho cercato qui di seguito il codice, ma la sua seconda richiesta ripetitivo lento e dopo si va solo in timeout per 59 secounds e di curriculum:

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

sta usando WebClient più efficiente ??

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

Sto usando NET ver 3.5

+0

"L'utilizzo del Web client è più efficiente?" Cosa ti ha impedito di provare? –

risposta

40

Ci sono cose extra lì dentro se stai solo provando a chiamare un sito web. Tutto quello che dovreste avere bisogno è:

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

Se non si desidera attendere una risposta, si può guardare BeginGetResponse per rendere asincrona.

9

Se non si desidera caricare i dati si dovrebbe usare:

webRequest.Method = "GET"; 

Se davvero non si preoccupano di ottenere tutti i dati indietro (ad esempio se si desidera verificare se la pagina è disponibile) utilizzare:

webRequest.Method = "HEAD"; 

In entrambi i casi, invece di webRequest.GetRequestStream() uso:

WebResponse myWebResponse = webRequest.GetResponse(); 
5

WebClient è una sintassi più breve e più concisa, ma dietro le quinte si utilizza una WebRequest, quindi in termini di prestazioni che non sarà più veloce, sarà equivalente. Se vuoi che sia più veloce dovrai migliorare lo script lato server o la tua infrastruttura di rete. Il problema non è dal lato del cliente.

+1

Un ulteriore strumento per ottenere prestazioni migliori sarebbe utilizzare il metodo HTTP "HEAD", soprattutto se il file richiesto è di grandi dimensioni. Tuttavia, la mia ipotesi è che il vero problema risieda altrove. –

Problemi correlati