2011-10-07 7 views
22

मैं किसी वेबसाइट पर एक HTTP कॉल करना चाहता था। मुझे बस यूआरएल हिट करने की जरूरत है और किसी भी डेटा को अपलोड या डाउनलोड नहीं करना है। ऐसा करने का सबसे आसान और तेज़ तरीका क्या है।सी # - एक HTTP कॉल कैसे करें

मैं नीचे दिए गए कोड की कोशिश की लेकिन इसकी धीमी और बाद 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); 

मैं ver 3.5

+0

"वेब क्लाइंट का उपयोग अधिक कुशल है?" क्या आपको कोशिश करने से रोक दिया? –

उत्तर

40

यदि आप वास्तव में वेबसाइट पर कॉल करने की कोशिश कर रहे हैं तो आपको वहां कुछ अतिरिक्त चीज़ें मिल गई हैं। आप सभी की जरूरत चाहिए:

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

आप एक प्रतिक्रिया के लिए प्रतीक्षा नहीं करना चाहते हैं, तो आप BeginGetResponse को देखो यह अतुल्यकालिक बनाने के लिए कर सकते हैं।

9

नेट उपयोग कर रहा हूँ कि आप किसी भी डेटा अपलोड करने के लिए नहीं करना चाहते हैं आप का उपयोग करना चाहिए:

webRequest.Method = "GET"; 

आप वास्तव में किसी भी डेटा प्राप्त करने के बारे में परवाह नहीं करते हैं वापस (उदाहरण के लिए आप सिर्फ अगर पेज उपलब्ध है देखने के लिए जाँच करना चाहते हैं) का उपयोग करें: किसी भी स्थिति में

webRequest.Method = "HEAD"; 

, बजाय webRequest.GetRequestStream() उपयोग की:

WebResponse myWebResponse = webRequest.GetResponse(); 
5

WebClient एक छोटा और अधिक संक्षिप्त वाक्य रचना है, लेकिन पर्दे के पीछे यह एक WebRequest का उपयोग करता है, तो प्रदर्शन के मामले में यह तेजी से नहीं होगा, यह बराबर होगी। यदि आप इसे तेज करना चाहते हैं तो आपको सर्वर साइड स्क्रिप्ट या अपने नेटवर्क आधारभूत संरचना में सुधार करना होगा। समस्या ग्राहक पक्ष पर नहीं है।

+1

अधिक प्रदर्शन प्राप्त करने का एक अतिरिक्त माध्यम 'हेड' HTTP विधि का उपयोग करना होगा, खासकर अगर फ़ाइल का अनुरोध किया जा रहा है तो बड़ा है। हालांकि, मेरा अनुमान है कि असली समस्या कहीं और है। –

संबंधित मुद्दे