2011-10-27 11 views
11

मैं अपने सी # आवेदन एक http अनुरोध भेजने के लिए सक्षम होने के लिए बनाने के लिए और रनटाइम पर जवाब प्राप्त करना चाहते हैंबनाना और सी # में एक HTTP अनुरोध प्राप्त

वेबसाइट मैं से अनुरोध करना चाहते हैं से एक स्पष्टीकरण HERE

है

मैंने पहले उस के साथ कोई अनुभव नहीं है, इसलिए मैं थोड़ा JSON, एक्सएमएल सामान मैं जानता हूँ कि मैं अनुरोध

उत्तर

19

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

var client = new WebClient(); 
string html = client.DownloadString("http://www.google.com"); 
Console.WriteLine(html); 

आपको लिंक करने वाले दस्तावेज़ों के अनुसार हर बार सही यूआरएल बनाने की आवश्यकता होगी।

यदि आप अपने एपीआई से बात करने के लिए ऊपर दिए गए उदाहरण कोड का उपयोग करते हैं, html (जो वास्तव में सामान्य रूप से प्रतिक्रिया डेटा है) में स्ट्रिंग के रूप में या तो XML या JSON होगा। इसके बाद आपको इसे किसी अन्य प्रकार के ऑब्जेक्ट पेड़ में पार्स करने की आवश्यकता होगी ताकि आप प्रतिक्रिया के साथ काम कर सकें। http://www.codeproject.com/KB/WCF/RestServiceAPI.aspx

+0

किसी बिंदु पर यदि आप कोशिश करते हैं और एक्सएमएल के साथ इसका उपयोग करते हैं तो यह दृष्टिकोण काटने जा रहा है। आपको पहले कुछ वर्णों के रूप में एक बाइट ऑर्डर मार्क मिलेगा और एक्सएमएल पेज़र इसे ठीक से deserialize नहीं होगा। –

+0

@DarrelMiller: एन्कोडिंग निर्दिष्ट करने के लिए 'सामग्री-प्रकार' शीर्षलेख होने पर वेब सर्वर बीओएम क्यों वापस करेगा? यहां तक ​​कि अगर ऐसा होता है, तो एक सरल 'स्टार्टविथ'/'सबस्ट्रिंग 'कॉम्बो इसे चारों ओर काम करना बहुत आसान बनाता है। – Jon

+0

निश्चित रूप से, यदि आप जानते हैं कि समस्या क्या है, तो यह ठीक करना मुश्किल नहीं है, लेकिन अधिकांश लोग जो वेब क्लाइंट का उपयोग करना चुनते हैं। डाउनलोडस्ट्रिंग आमतौर पर नहीं! –

0

आप एक WCF बाकी एपीआई लागू कर सकता है। ये वे ऑब्जेक्ट्स होंगे जो वास्तव में HTTP अनुरोध करते हैं।

अनुरोध और प्रतिक्रिया में प्रति वायरलहेट एपीआई के निकायों में एक्सएमएल और जेएसओएन शामिल होंगे जो आपने लिंक किया था।

3

आप HttpWebRequest और HttpWebResponse वस्तुओं को देखने के लिए चाहता हूँ:

6

सुझाए गए वेब क्लाइंट का उपयोग करने के अलावा, आप JetBrains से हादी हरिरी द्वारा EasyHttp पर भी देख सकते हैं। आप रीडमी से https://github.com/hhariri/EasyHttp सारांश में इसे पा सकते हैं: -

EasyHttp HTTP ग्राहक का समर्थन करता है कि उपयोग करने के लिए एक आसान:

  • HEAD, PUT, हटाएँ, मिलता है, पोस्ट
  • कुकीज़
  • प्रमाणीकरण
  • गतिशील और स्टेटिक टंकण
  • एक्सएमएल, JSON और WWW-यूआरएल रूप इनकोडिंग एन्कोडिंग/डिकोडिंग
  • फ़ाइल दोनों वी अपलोड आइए रख दिया और पोस्ट (बहुखण्डीय/formdata)
  • कुछ अन्य स्वच्छ छोटी सुविधाओं ....
1

यह http://www.nuget.org/List/Packages/HttpClient माइक्रोसॉफ्ट की रणनीतिक आगे बढ़ने httpclient है। मुझे उम्मीद है कि इस पुस्तकालय को निकट भविष्य में माइक्रोसॉफ्ट के सभी प्लेटफार्मों में लागू किया जाएगा।

+0

आप कैसे जानते हैं कि यह माइक्रोसॉफ्ट के सभी प्लेटफार्मों में लागू किया जाएगा? संपर्क? –

+1

@MontanaHarkin मैंने नहीं कहा था कि मुझे पता था :-)। मैंने कहा, "मैं उम्मीद करता हूं"। मुझे पता है कि इस समर्थन को सक्षम करने के लिए इसे आर्किटेक्टेड किया गया है। यही कारण है कि Windows डेस्कटॉप के लिए विशिष्ट विशेषताएं, जैसे WinINetProxy WebRequestHandler में हैं और डिफ़ॉल्ट HttpClientHandler में नहीं हैं? मुझे आर्किटेक्ट्स में से एक ने यह भी बताया है कि यह WinRT पर चलेगा। –

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