HttpContent का उपयोग करने का तरीका नहीं खोज सकते


184

मैं उपयोग करने की कोशिश कर रहा हूं HttpContent:

HttpContent myContent = HttpContent.Create(SOME_JSON);

... लेकिन मुझे डीएलएल को खोजने का कोई सौभाग्य नहीं है जहां इसे परिभाषित किया गया है।

सबसे पहले, मैंने संदर्भों को Microsoft.Httpऔर अधिक जोड़ने की कोशिश की System.Net, लेकिन न तो सूची में है। मैंने एक संदर्भ जोड़ने की भी कोशिश की, System.Net.Httpलेकिन HttpContentकक्षा उपलब्ध नहीं है।

तो, क्या कोई मुझे बता सकता है कि मुझे HttpContentकक्षा कहां मिल सकती है ?

जवाबों:


-7

कक्षा कोSystem.Net.Http विधानसभा में उपस्थित होने के रूप में सूचीबद्ध किया गया है । ध्यान दें कि यह वर्ग .NET 4.5 के लिए नया है, इसलिए आपको BCL के उस संस्करण का उपयोग करने की आवश्यकता है।


2
यह Microsoft .NET के माध्यम से .NET 4 के लिए भी उपलब्ध है। NuGet से
http

121
घृणा करने के लिए नफरत है, लेकिन सवाल दिया, यह प्रतियोगिता का जवाब नहीं है? ज़रूर System.Net.Http में HttpContent शामिल है। लेकिन HttpContent में Create Method नहीं है। आपको StringContent जैसे व्युत्पन्न वर्गों ( pfelix.wordpress.com/2012/01/16/… ) में से एक का उपयोग करने की आवश्यकता होगी । उदा। नया स्ट्रिंगरेंट (SOME_JSON)
6:51 12

13
@ 6footunder यह बिल्कुल सही नहीं है, यह उत्तर सही नहीं है।
अरन मुल्होलैंड

आप यंगजए के उत्तर को एक उचित उदाहरण के लिए नीचे देख सकते हैं: stackoverflow.com/a/24474664/21539
ज़ैन रिज़वी

8
यह उत्तर ओपी के मूल प्रश्न के आशय को संबोधित करता है जो मेरे सावधान पढ़ने से ही पूछता है कि कक्षा कहाँ मिल सकती है। (यह भी ध्यान दें कि ओपी ने इस उत्तर को स्वीकार कर लिया है।) ऐसा सिर्फ इसलिए होता है कि ओपी को एक दूसरी समस्या थी (उदाहरण का निर्माण करने की कोशिश करना ) जो डीएल संदर्भ समस्या हल होने के बाद ओपी के लिए स्पष्ट नहीं थी। यहाँ कुछ उत्तरों से पता चलता है कि दूसरी समस्या और कई ने उन उत्तरों को उपयोगी पाया है। अंत में, मैंने इसे स्पष्ट करने के लिए प्रश्न (ओपी के मूल पाठ पर आधारित) को संपादित किया है। HttpContentHttpClient
डेविड आरआर

373

महज प्रयोग करें...

var stringContent = new StringContent(jObject.ToString());
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

या,

var stringContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

कहते हैं कि कंटेंट पैरामीटर IHttpContent होना चाहिए न कि StringContent। जब मैंने इसे इंटरफ़ेस में डाला, तो यह खुश है, हालांकि।
माईकओवर

3
HttpStringContent का उपयोग करके समाप्त हुआ। मैं StringContent वर्ग का उपयोग नहीं कर सका क्योंकि PostAsync (या मेरे मामले में PutAsync) StringContent को स्वीकार नहीं करता है, भले ही आप इसे IHttpContent ऑब्जेक्ट में डाल दें।
१५'15

4
StringContent मेरे लिए PostAsync के साथ काम करता है, लेकिन यदि आप चाहते हैं या आपको HttpContent का उपयोग करने की आवश्यकता है, तो आप ऐसा कर सकते हैं: HttpContent content = new StringContent (jsonString);
क्रिस कोस्टर

मैं इस जवाब को देखता रहता हूं कि यह मेरे लिए एक समान समस्या प्रतीत होती है, हालांकि जैसा कि मैंने अपने दोनों एपीआई के माध्यम से डिबग किया है, मुझे एक आग लगाने के लिए पोस्टएंशस ("पथ", स्ट्रिंगकॉन्टेंट) मिलता है, लेकिन जब यह दूसरे एपीआई को हिट करता है तो मैं नहीं करता पार्स और उपयोग करने के लिए एक शरीर है और वापसी पर मुझे एक 500 मिलता है ... मैं एक नुकसान में हूं क्योंकि ऐसा लगता है कि मैं इसे इस तरह से कर रहा हूं। केवल अंतर यह है कि मैं ऑब्जेक्ट को क्रमबद्ध नहीं करता हूं क्योंकि यह पहले से ही सीरीज़ किया गया है जब मैं इसे पहले एपीआई में प्राप्त करता हूं और यह एक सरल पैशाच है।
स्लैगमोथ 17

इसका उत्तर यह होना चाहिए: /
डैनियलव नोव

147

6footunder की टिप्पणी लेने के लिए और इसे एक उत्तर में बदल दें, HttpContentसार है इसलिए आपको व्युत्पन्न वर्गों में से एक का उपयोग करने की आवश्यकता है:

यहां छवि विवरण दर्ज करें


5
ऐसा लगता है कि उन्होंने विज़ुअल स्टूडियो के "क्लास डायग्राम" फीचर का उपयोग किया था (आइटम, क्लास डायग्राम जोड़ें, अपने प्रोजेक्ट को राइट-क्लिक करें। फिर आप सोल्यूशन एक्सप्लोरर पर जा सकते हैं और आपके द्वारा संदर्भित पुस्तकालयों के आरेख प्राप्त करने के लिए संदर्भ का विस्तार कर सकते हैं।) docs.microsoft.com/en -सु / विजुअस्टडियो / ide /…
Arin

77

JSON पोस्ट के लिए:

var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

गैर JSON:

var stringContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("field1", "value1"),
    new KeyValuePair<string, string>("field2", "value2"),
});
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

https://blog.pedrofelix.org/2012/01/16/the-new-system-net-http-classes-message-content/


मैं आपके "गैर-जोंस" उदाहरण का उपयोग करने की कोशिश कर रहा हूं, मुझे प्राप्त अंत पर डेटा कैसे पढ़ना चाहिए?
जो

var सामग्री = प्रतिक्रिया का इंतजार करें। कंटेंट। ReadAsStringAsync ();
फेलिप डिवेज़

6

HttpContent के अंतिम संस्करण और पूरे System.Net.Http नाम स्थान .NET 4.5 के साथ आया करते हैं, आप को जोड़कर एक .NET 4 संस्करण का उपयोग कर सकते हैं Microsoft.Net.Http NuGet से पैकेज


0

मुझे पूरा यकीन है कि कोड System.Net.Http.HttpContent वर्ग का उपयोग नहीं कर रहा है, लेकिन इसके बजाय Microsoft। Http। Microsoft.Http WCF REST Starter Kit था, जिसने .NET फ्रेमवर्क में रखे जाने से पहले कभी भी इसका पूर्वावलोकन नहीं किया था। आप अभी भी इसे यहाँ पा सकते हैं: http://aspnet.codeplex.com/releases/view/24644

मैं इस पर नए कोड को आधार बनाने की सिफारिश नहीं करूंगा।


0

System.Net.Httpनाम स्थान (जहां HttpContentवर्ग बसता था) के लिए नई है नेट 4.5 , आप एक VS2012 आर सी का उपयोग कर रहे हैं?

अन्यथा, आपके पास इस तक पहुंच नहीं होगी।

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