Saya mencoba POST suatu JsonObject
penggunaan HttpClient
dari Web API. Saya tidak begitu yakin bagaimana cara melakukannya dan tidak dapat menemukan banyak cara kode sampel.
Inilah yang saya miliki sejauh ini:
var myObject = (dynamic)new JsonObject();
myObject.Data = "some data";
myObject.Data2 = "some more data";
HttpClient httpClient = new HttpClient("myurl");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.Post("", ???);
Saya pikir saya perlu melemparkan saya JsonObject
sebagai StreamContent
tapi saya terpaku pada langkah itu.
c#
asp.net
wcf
asp.net-web-api
wcf-web-api
Menandai
sumber
sumber
using
seperti saya adalah: aspnetmonsters.com/2016/08/2016-08-27-httpclientwrongusing
sekitarStringContent
penciptaan sekalipun.var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json")
saya harus mengaturcontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
. Lihat jawaban di bawah untuk detail lebih lanjut.Cara termudah adalah dengan menggunakan
StringContent
, dengan representasi JSON dari objek JSON Anda.sumber
Bergantung pada versi .NET Anda, Anda juga dapat menggunakan
HttpClientExtensions.PostAsJsonAsync
metode.https://msdn.microsoft.com/en-us/library/system.net.http.httpclientextensions.postasjsonasync.aspx
sumber
Jika menggunakan Newtonsoft.Json:
Contoh:
sumber
JsonConvert.SerializeObject
masalah menggunakan DateTimes ISO 8601 Jenis: Lokal atau UTC ... hackered.co.uk/articles/…Saya tidak memiliki reputasi yang cukup untuk menambahkan komentar pada jawaban dari pomber jadi saya memposting jawaban lain. Dengan menggunakan pendekatan pomber, saya terus menerima respons "400 Permintaan Buruk" dari API yang saya kirimi permintaan JSON saya ke (Visual Studio 2017, .NET 4.6.2). Akhirnya masalah ditelusuri ke header "Tipe-Konten" yang dihasilkan oleh StringContent () salah (lihat https://github.com/dotnet/corefx/issues/7864 ).
tl; dr
Gunakan jawaban pomber dengan garis tambahan untuk mengatur header dengan benar pada permintaan:
sumber
"application/json"
dalamStringContent
konstruktor mungkin tidak diperlukan karena sedang diatur secara eksplisit padacontent.Headers.ContentType
properti yang dihasilkan . Namun, saya belum menguji ini dalam kode.application/json; charset=utf-8
.kode di atasnya di vbnet:
Semoga bantuan ini
sumber