Saya mencoba memanggil API web dari aplikasi web saya. Saya menggunakan .Net 4.5 dan saat menulis kode saya mendapatkan kesalahan HttpClient
tidak mengandung PostAsJsonAsync
metode definisi .
Di bawah ini adalah kode:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;
var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
dan saya mendapatkan pesan kesalahan:
Kesalahan: 'System.Net.Http.HttpClient' tidak mengandung definisi untuk 'PostAsJsonAsync' dan Tidak Ada metode ekstensi 'PostAsJsonAsync' menerima argumen pertama dari jenis 'System.Net.Http.HttpClient' dapat ditemukan (apakah Anda melewatkan sebuah menggunakan arahan atau referensi perakitan?)
Silakan lihat dan saran saya.
c#
json
asp.net-web-api
dotnet-httpclient
Jidheesh Rajan
sumber
sumber
Jawaban:
Ya, Anda perlu menambahkan referensi
Ini dapat ditemukan di area majelis ekstensi.
Cara yang baik untuk mencapai ini adalah dengan menambahkan paket NuGet
Microsoft.AspNet.WebApi.Client
ke proyek Anda.sumber
PostAsJsonAsync
tidak lagi diSystem.Net.Http.dll
(.NET 4.5.2). Anda dapat menambahkan referensiSystem.Net.Http.Formatting.dll
, tetapi ini sebenarnya milik versi yang lebih lama. Saya mengalami masalah dengan ini di server build TeamCity kami, keduanya tidak mau bekerja sama.Atau, Anda dapat mengganti
PostAsJsonAsync
denganPostAsync
panggilan, yang hanya merupakan bagian dari dll baru. MenggantikanDengan:
Perhatikan bahwa
JavaScriptSerializer
dalam namespace:System.Web.Script.Serialization
.Anda harus menambahkan referensi perakitan di csproj Anda:
System.Web.Extensions.dll
Lihat https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836
sumber
await FooAsync()
alih-alihFooAsync().Result
. Yang terakhir bisa menemui jalan buntu. Lihat stackoverflow.com/q/17248680/2272514 dan jawabannya diterima. Ada juga tautan bagus tentang detail.Referensi yang hilang adalah
System.Net.Http.Formatting.dll
. Tetapi solusi yang lebih baik adalah dengan menambahkan paket NuGetMicrosoft.AspNet.WebApi.Client
untuk memastikan versi dll pemformatan bekerja dengan versi .NET frameworkSystem.Net.Http
dalam proyek saya.sumber
Seperti yang sudah didebat, metode ini tidak tersedia lagi sejak .NET 4.5.2. Untuk memperluas jawaban Jeroen K, Anda dapat membuat metode ekstensi:
Sekarang Anda dapat menelepon
client.PostAsJsonAsync("api/AgentCollection", user)
.sumber
Saya punya masalah ini juga pada proyek saya baru saja memeriksa dari kontrol sumber.
Gejala adalah kesalahan yang dijelaskan di atas dan segitiga peringatan kuning pada referensi ke
System.Net.Http.Formatting
Untuk memperbaikinya, saya menghapus referensi yang rusak dan kemudian menggunakan NuGet untuk menginstal versi terbaru
Microsoft.AspNet.WebApi.Client
.sumber
Install-Package Microsoft.AspNet.WebApi.Client
Saya tahu balasan ini terlambat, saya memiliki masalah yang sama dan saya menambahkan
System.Net.Http.Formatting.Extension
Nuget, setelah memeriksa di sana-sini saya menemukan bahwa Nuget ditambahkan tetapiSystem.Net.Http.Formatting.dll
tidak ditambahkan ke referensi, saya baru menginstal ulang Nugetsumber
Cobalah untuk menginstal dalam proyek Anda Paket NuGet: Microsoft.AspNet.WebApi.Client:
sumber
Alih-alih menulis jumlah kode ini untuk membuat panggilan sederhana, Anda dapat menggunakan salah satu pembungkus yang tersedia melalui internet.
Saya telah menulis satu yang disebut WebApiClient, tersedia di NuGet ... coba lihat!
https://www.nuget.org/packages/WebApiRestService.WebApiClient/
sumber
Jika Anda bermain-main di Blazor dan mendapatkan kesalahan, Anda perlu menambahkan paket
Microsoft.AspNetCore.Blazor.HttpClient
.sumber
Hanya perluas jawaban Jeroen dengan kiat di komentar:
sumber