ฉันเห็นตัวอย่างมากมายบนเว็บโดยใช้HttpClient
ออบเจ็กต์ใหม่(เป็นส่วนหนึ่งของ Web API ใหม่) ว่าควรมีHttpContent.ReadAsAsync<T>
วิธีการ อย่างไรก็ตามMSDNไม่ได้กล่าวถึงวิธีการนี้และ IntelliSense ไม่พบมัน
มันไปไหนและฉันจะแก้ไขได้อย่างไร
ฉันเห็นตัวอย่างมากมายบนเว็บโดยใช้HttpClient
ออบเจ็กต์ใหม่(เป็นส่วนหนึ่งของ Web API ใหม่) ว่าควรมีHttpContent.ReadAsAsync<T>
วิธีการ อย่างไรก็ตามMSDNไม่ได้กล่าวถึงวิธีการนี้และ IntelliSense ไม่พบมัน
มันไปไหนและฉันจะแก้ไขได้อย่างไร
คำตอบ:
ดูเหมือนว่ามันเป็นวิธีการขยาย (ใน System.Net.Http.Formatting):
ปรับปรุง:
PM> การติดตั้งแพ็คเกจ Microsoft.AspNet.WebApi.Client
ตามหน้าSystem.Net.Http.Formattingแพคเกจ NuGet แพคเกSystem.Net.Http.Formatting
จตอนนี้เป็นมรดกและสามารถพบได้ในMicrosoft.AspNet.WebApi.Client
แพคเกจที่มีอยู่บนNuGetแทน
System.Net.Http.Formatting
ดูเหมือนว่ามันถูกย้ายไปยังแพคเกจnuget.org/packages/Microsoft.AspNet.WebApi.Client
HttpContent.ReadAsAsync<T>
ไม่ได้อยู่ใน Microsoft.AspNet.WebApi.Client การเปลี่ยนที่แนะนำคืออะไร
ฉันมีปัญหาเดียวกันดังนั้นฉันจึงได้รับสตริง JSON และ deserialize ในชั้นเรียนของฉัน:
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);
ReadAsAsync
ใช่ไหม
หากคุณใช้อยู่แล้วNewtonsoft.Json
และไม่ต้องการติดตั้งMicrosoft.AspNet.WebApi.Client
:
var myInstance = JsonConvert.DeserializeObject<MyClass>(
await response.Content.ReadAsStringAsync());
คุณสามารถเขียนวิธีการขยายได้:
public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
เพียงคลิกขวาในโครงการของคุณไปจัดการแพคเกจ NuGet ค้นหา Microsoft.AspNet.WebApi.Client ติดตั้งและคุณจะสามารถเข้าถึงวิธีการขยาย
ต้องกดปุ่มนี้สองสามครั้งและทำตามคำแนะนำหากคุณไม่พบมันหลังจากติดตั้ง 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