Saya memiliki beberapa kode JavaScript yang perlu saya ubah ke C #. Kode JavaScript saya mengeposkan beberapa JSON ke layanan web yang telah dibuat. Kode JavaScript ini berfungsi dengan baik dan terlihat seperti berikut:
var vm = { k: "1", a: "2", c: "3", v: "4" };
$.ajax({
url: "http://www.mysite.com/1.0/service/action",
type: "POST",
data: JSON.stringify(vm),
contentType: "application/json;charset=utf-8",
success: action_Succeeded,
error: action_Failed
});
function action_Succeeded(r) {
console.log(r);
}
function log_Failed(r1, r2, r3) {
alert("fail");
}
Saya mencoba mencari cara untuk mengubahnya menjadi C #. Aplikasi saya menggunakan .NET 2.0. Dari apa yang bisa saya katakan, saya perlu melakukan sesuatu seperti berikut:
using (WebClient client = new WebClient())
{
string json = "?";
client.UploadString("http://www.mysite.com/1.0/service/action", json);
}
Saya sedikit terjebak pada saat ini. Saya tidak yakin json
akan terlihat seperti apa. Saya tidak yakin apakah saya perlu menyetel tipe konten. Jika saya melakukannya, saya tidak yakin bagaimana melakukan itu. Saya juga melihat UploadData
. Jadi, saya tidak yakin apakah saya menggunakan metode yang benar. Dalam arti tertentu, serialisasi data saya adalah masalah saya.
Bisakah seseorang memberi tahu saya apa yang saya lewatkan di sini?
Terima kasih!
WebClient
, dan tidak berhasil. Kemudian saya mencoba solusi ini, dan hasilnya luar biasa. Saya menggunakanUTF8Encoding
alih-alihASCIIEncoding
membuat array byte, karena saya tidak melihat alasan untuk menggunakan ASCII, yang mengurangi karakter yang tersedia dengan cara yang tidak dapat diterima. ASCII hanya memiliki 127 karakter di charset.Pertanyaannya sudah terjawab tetapi saya rasa saya telah menemukan solusi yang lebih sederhana dan lebih relevan dengan judul pertanyaan, ini dia:
var cli = new WebClient(); cli.Headers[HttpRequestHeader.ContentType] = "application/json"; string response = cli.UploadString("http://some/address", "{some:\"json data\"}");
PS: Di sebagian besar implementasi .net, tetapi tidak di semua WebClient IDisposable, jadi tentu saja lebih baik melakukan 'using' atau 'Dispose' di atasnya. Namun dalam kasus khusus ini tidak terlalu diperlukan .
sumber
Contoh berikut menunjukkan cara POST JSON melalui Metode WebClient.UploadString :
var vm = new { k = "1", a = "2", c = "3", v= "4" }; using (var client = new WebClient()) { var dataString = JsonConvert.SerializeObject(vm); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.UploadString(new Uri("http://www.contoso.com/1.0/service/action"), "POST", dataString); }
sumber
POST
argumen karenaUploadString
secara implisit menggunakan metode ini sebagai default. Selanjutnya Anda mungkin ingin menambahkanclient.Headers.Add(HttpRequestHeader.Accept, "application/json");
jika Anda mengharapkanJSON
sebagai imbalan.public class WebClient : Component
public class Component : MarshalByRefObject, IComponent, IDisposable