এইচটিটিপি কনটেন্ট.আরআডএএএসএনসিঙ্ক কোথায়?


283

আমি ওয়েবে বিভিন্ন সংখ্যক উদাহরণে নতুন HttpClientঅবজেক্টটি (নতুন ওয়েব এপিআইয়ের অংশ হিসাবে) ব্যবহার করে দেখছি যে HttpContent.ReadAsAsync<T>পদ্ধতি থাকা উচিত । তবে এমএসডিএন এই পদ্ধতির উল্লেখ করে না, না ইন্টেলিসেন্স এটি খুঁজে পায় না।

এটি কোথায় গেল এবং আমি কীভাবে এটি ঘিরে কাজ করব?

উত্তর:


436

দেখে মনে হচ্ছে এটি একটি এক্সটেনশন পদ্ধতি (System.Net.Http. Formatting এ):

এইচটিটিপি কনটেন্ট এক্সটেনশন ক্লাস

হালনাগাদ:

প্রধানমন্ত্রী> ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এএসপনেট.উইবএপিআই.ক্লায়েন্ট

System.Net.Http . Formatting NuGet প্যাকেজ পৃষ্ঠা অনুসারে, System.Net.Http.Formattingপ্যাকেজটি এখন উত্তরাধিকারসূত্রে পরিণত হয়েছে এবং পরিবর্তে এখানে নুগেটেMicrosoft.AspNet.WebApi.Client উপলব্ধ প্যাকেজটিতে পাওয়া যাবে


সর্বশেষ ক্লায়েন্ট ন্যুয়েটসে কি এটি অবহেলা করা হয়েছে? এটি এখনই খুঁজে পাচ্ছেন না (সক্ষম হতে অভ্যস্ত)।
জর্জিওসড

এটা ভাল হতে পারে। .NET4.5 async / কার্যাদি (অপেক্ষা, ইত্যাদি) হিসাবে প্রচুর নতুন স্টাফ যুক্ত করেছে, সুতরাং এই এক্সটেনশনগুলির আর প্রয়োজন হয় না। আমি এখানে একটি নজরে থাকতে পারে
জে ...

4
@ জর্জিওসড আমি সবেমাত্র উত্তরটি আপডেট করেছি। মাঝামাঝি সময়ে System.Net.Http.Formattingদেখে মনে হচ্ছে এটি nuget.org/packages/Mic Microsoft.AspNet.WebApi.Client প্যাকেজটিতে চলে গেছে
জোসেফ উডওয়ার্ড

1
সুতরাং এটি কি সত্য যে মূল প্রশ্নে, পদ্ধতিটি HttpContent.ReadAsAsync<T>মাইক্রোসফ্টে নেই? এস্পনেট.ওয়েবএপি.প্লাইেন্ট? প্রস্তাবিত প্রতিস্থাপন কি?
প্যাট্রিক জাজালাপস্কি

1
পছন্দ করেছেন WebAPI. ক্লায়েন্ট প্যাকেজের জন্য নেট নেট 4.5 প্রয়োজন। আমি মনে করি পুরাতন এইচটিটিপি কনটেন্ট এক্সটেনশনগুলি। নেট 4.0
জে ...

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
এটি অগত্যা কোনও দুর্বল কাজ নয়, এটি স্থানীয়করণ করা হয়েছে এবং তাই ভবিষ্যতের নুগেট আপডেটগুলি নষ্ট হওয়ার সম্ভাবনা নেই etc. আমি এর জন্য সবই করছি।
12:38

3
এটি অনুমান করে রেপ্লোনটিতে একটি JSON সামগ্রী-প্রকার রয়েছে।
কোডকাস্টার

30

আপনি যদি ইতিমধ্যে ব্যবহার করছেন Newtonsoft.Jsonএবং ইনস্টল করতে না চান Microsoft.AspNet.WebApi.Client:

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

9

আপনি এক্সটেনশন পদ্ধতি লিখতে পারেন:

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

এটিই আমি শেষ করেছিলাম - আমি 2-লাইনের পদ্ধতির জন্য একটি সম্পূর্ণ ডিএলএল টেনে আনব না।
লিজ


0

এটি কয়েকবার হিট করে এবং বেশ কিছু পরামর্শ অনুসরণ করেছে, যদি আপনি নুগেট মাইক্রোসফ্ট ইনস্টল করার পরে এটি উপলভ্য না পান তবে সমাধানটিতে প্যাকেজ ফোল্ডার থেকে ম্যানুয়ালি একটি রেফারেন্স যুক্ত করুন:

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

এবং System.Net.Http. Formatting.dll নিউগেটে পুরানো রেফারেন্স যুক্ত করার ফাঁদে যাবেন না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.