HttpContent.ReadAsAsync कहाँ है?


283

मैं वेब पर नए HttpClientऑब्जेक्ट (नए वेब एपीआई के हिस्से के रूप में) का उपयोग करके उदाहरणों के टन में देखता हूं कि HttpContent.ReadAsAsync<T>विधि होनी चाहिए । हालाँकि, MSDN इस विधि का उल्लेख नहीं करता है, और न ही IntelliSense इसे खोजता है।

यह कहां गया, और मैं इसके आसपास कैसे काम करूं?

जवाबों:


436

ऐसा लगता है कि यह एक विस्तार विधि है (System.Net.Http.Formatting में):

HttpContentExtensions वर्ग

अपडेट करें:

PM> इंस्टॉल-पैकेज Microsoft.AspNet.WebApi.Client

System.Net.Http.Formatting NuGet पैकेज पृष्ठ के अनुसार , System.Net.Http.Formattingपैकेज अब विरासत है और इसके बजाय यहाँ NuGetMicrosoft.AspNet.WebApi.Client पर उपलब्ध पैकेज में पाया जा सकता है


क्या यह नवीनतम क्लाइंट नगेट्स में पदावनत किया गया है? इसे अभी नहीं खोजा जा सकता है (इसका उपयोग करने में सक्षम है)।
जार्जियोसड

यह अच्छी तरह से हो सकता है। .NET4.5 ने async / कार्यों (प्रतीक्षा, आदि) के संबंध में बहुत कुछ नया सामान जोड़ा है, इसलिए ये एक्सटेंशन अब आवश्यक नहीं हो सकते हैं। मैं शायद यहाँ एक नज़र रखूँगा
J ...

4
@georgiosd मैंने अभी उत्तर को अपडेट किया है। बीच के समय में System.Net.Http.Formattingऐसा लगता है कि यह nuget.org/packages/Microsoft.AspNet.WebApi.Client पैकेज में चला गया है।
जोसफ वुडवर्ड

1
तो क्या यह सच है कि मूल प्रश्न में विधि, HttpContent.ReadAsAsync<T>Microsoft.AspNet.WebApi.Client में नहीं है? सुझाया गया प्रतिस्थापन क्या है?
पैट्रिक सज़ालापस्की

1
@JedatKinports काफी यकीन है कि यह नहीं करता है। WebAPI.Client पैकेज को .NET 4.5 की आवश्यकता है। मुझे लगता है कि पुराने HttpContentExtensions .NET 4.0
J ...

68

मेरे पास एक ही समस्या है, इसलिए मुझे बस JSON स्ट्रिंग मिलती है और अपनी कक्षा के लिए प्रेरित करती है:

HttpResponseMessage response = await client.GetAsync("Products");
//get data as Json string 
string data = await response.Content.ReadAsStringAsync();
//use JavaScriptSerializer from System.Web.Script.Serialization
JavaScriptSerializer JSserializer = new JavaScriptSerializer();
//deserialize to your class
products = JSserializer.Deserialize<List<Product>>(data);

8
इस तथ्य के अलावा कि यह सवाल का जवाब नहीं देता है, यह मतदान क्यों हुआ? क्या यह एक उचित विकल्प नहीं है ReadAsAsync?
जेस

7
यह निश्चित है! +1!
मर्चिफ़

7
शायद इसलिए कि आपने इस सवाल का जवाब नहीं दिया कि एक्सटेंशन विधि कहां गई। अपना खुद का लिखना एक खराब काम है
ब्रिटिशडब्लूपर

13
यह जरूरी नहीं कि खराब वर्कअराउंड है, यह स्थानीयकृत है और इसलिए भविष्य के नगेट अपडेट आदि में टूटने की संभावना नहीं है।
रोल

3
यह मानता है कि रिपॉसन में JSON कंटेंट-टाइप होता है।
कोडकास्टर

30

यदि आप पहले से ही उपयोग कर रहे Newtonsoft.Jsonहैं और इंस्टॉल नहीं करना चाहते हैं Microsoft.AspNet.WebApi.Client:

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());

9

आप extention विधि लिख सकते हैं:

public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
    return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}

यह वही है जो मैंने समाप्त कर दिया है - मैं एक 2-लाइन विधि के लिए संपूर्ण DLL को खींचने नहीं जा रहा हूं।
लिज़

5

बस अपनी परियोजना में राइट क्लिक करें Microsoft.spNet.WebApi.Client के लिए NuGet संकुल प्रबंधित करें इसे स्थापित करें और आपके पास एक्सटेंशन विधि तक पहुंच होगी।


3
किसको क्या शिकायत है?
डेविड फेफर

0

यह एक बार कुछ हिट और सुझावों का एक गुच्छा पीछा किया, अगर आप NuGet Microsoft.AspNet.WebApi.Client स्थापित करने के बाद इसे उपलब्ध नहीं पाते हैं, तो मैन्युअल रूप से समाधान में संकुल फ़ोल्डर से एक संदर्भ जोड़ें:

\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll

और System.Net.Http.Formatting.dll NuGet में पुराने संदर्भों को जोड़ने के जाल में न पड़ें

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