# में system.net.webrequest का उपयोग करके json प्रतिक्रिया कैसे प्राप्त करें?


80

मुझे एक बाहरी डोमेन से json डेटा प्राप्त करने की आवश्यकता है। मैंने वेबसाइट से प्रतिक्रिया प्राप्त करने के लिए वेबरेक्वेस्ट का उपयोग किया। यहाँ कोड है:

var request = WebRequest.Create(url);
string text;
var response = (HttpWebResponse) request.GetResponse();

using (var sr = new StreamReader(response.GetResponseStream()))
{
    text = sr.ReadToEnd();
}

किसी को भी पता है कि मुझे json डेटा क्यों नहीं मिल रहा है?


किसी को भी पता है कि मैं क्यों json डेटा नहीं मिल सकता है?
h3n

6
आपको जरूरत है using (var response = request.GetResponse()){ ... }। समस्या को हल नहीं कर सकता है लेकिन संसाधन रिसाव को बचाता है।
जॉन सॉन्डर्स

जवाबों:


67

आपको सामग्री प्रकार के लिए स्पष्ट रूप से पूछने की आवश्यकता है।

इस पंक्ति को जोड़ें:

 request.ContentType = "application/json; charset=utf-8";
उपयुक्त स्थान पर


क्या इस अनुरोध के साथ पैरामीटर पारित करना संभव है ??
जिद्देश राजन

7
अनुरोध सामग्री-प्रकार अनुरोध शरीर के प्रकार का वर्णन करता है। इसका उपयोग सर्वर को यह बताने के लिए किया जाता है कि डेटा किस प्रारूप में सर्वर को भेजा जा रहा है। इसका सामग्री प्रकार की प्रतिक्रिया से कोई लेना-देना नहीं है। क्लाइंट Acceptहेडर का उपयोग करके विशिष्ट प्रकारों के साथ जवाब देने के लिए कह सकता है , लेकिन सर्वर अन्य कारणों से इसे अनदेखा कर सकता है।
टेम्पो


मुझे पता है कि यह एक पुराना उत्तर है, लेकिन पूर्णता के लिए @SHEKHARSHETE को जवाब देना चाहता था: आप कुछ ऐसा उपयोग कर सकते हैं जैसे कि NewtonSoft JSON.Net जो आपके लिए काम करेगा और मैं आपको यहां यह करने के लिए उपयोगी गाइड पढ़ने की सलाह देता हूं: newtonsoft.com/json
ताहिर खालिद

73

कुछ API चाहते हैं कि आप वांछित प्रतिक्रिया प्रकार प्राप्त करने के लिए अनुरोध में उपयुक्त "स्वीकार" हेडर की आपूर्ति करें

उदाहरण के लिए यदि कोई XML और JSON में डेटा वापस कर सकता है और आप JSON परिणाम चाहते हैं, तो आपको HttpWebRequest.Acceptसंपत्ति को "एप्लिकेशन / json" पर सेट करना होगा ।

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
httpWebRequest.Method = WebRequestMethods.Http.Get;
httpWebRequest.Accept = "application/json";

1
क्या इसके साथ पैरामीटर पारित करना संभव है ??
जिद्देश राजन

शायद आप अपने मापदंडों को requestUriIe लोकलहोस्ट / एपी / प्रोडक्ट / 123 में जोड़ने की कोशिश कर सकते हैं
दिमित्रीबायको

@JidheeshRajan कैसे एक में पैरामीटर जोड़ने के लिए इस सवाल का / उत्तर देखें WebRequest stackoverflow.com/questions/3279888/...
मार्टिन Buberl

1
केवल request.ContentType = "application / json जोड़ना; मेरे लिए पर्याप्त नहीं था, इसलिए मुझे लगता है कि आपका समाधान सही है।
कैम्पिन्हो

यह उत्तर स्वीकार किया जाना चाहिए क्योंकि वर्तमान स्वीकृत उत्तर सही नहीं है। उपयुक्त होने पर "स्वीकार" का उपयोग नहीं करने का एक और उदाहरण ...
Arkaine55
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.