Restsharp: Tidak dapat POSTING JSON mentah

Dibuat pada 17 Jun 2015  ·  3Komentar  ·  Sumber: restsharp/RestSharp

Saya baru mengenal RESTSharp - dan relatif baru dalam REST secara umum. Saya telah menguji panggilan layanan ini di Postman dan berfungsi dengan baik di sana dengan input yang sama tetapi hanya ketika string json dilewatkan sebagai teks mentah.

Layanan mengembalikan Kesalahan Server Internal: "Parameter yang diharapkan" Kebijakan "tidak lulus".

            string postData = @"{""Policy"":{""PolicyId"": 123456, ""Holder"": ""TestHolder Name"", ""HolderAddress"": {  ""Line1"": ""Address1"",  ""Line2"": ""address2"", ""City"": ""MyCity"", ""State"": ""ME"", ""Zip"": ""04079""}}}";

            var client = new RestClient(DecisionsSettings.DecisionsURL);
            client.AddDefaultHeader("Content-Type", "application/json");

            var request = new RestRequest("/decisions/Primary/?RuleId=" + _RuleId + "&Action=api&outputtype=JSON", Method.POST);

            request.AddParameter("userid", DecisionsSettings.DecisionsUsername);
            request.AddParameter("password", DecisionsSettings.DecisionsPassword);
            request.RequestFormat = DataFormat.Json;

           // request.AddBody(postData);//this did not work
            request.AddParameter("application/json; charset=utf-8", postData, ParameterType.RequestBody);



            var response = client.Execute(request);
            responseString = response.Content;

Komentar yang paling membantu

@hallem Menggunakan AddJsonBody tidak akan berfungsi, karena mengharapkan objek json. Sampai sekarang tidak ada cara untuk meneruskan string json mentah (AddBody, dan menyetel konten ke Json tidak berfungsi). Solusinya adalah mendapatkan string mentah, deserializing menjadi objek json, dan kemudian meneruskannya ke Restsharp AddJsonBody. Jelas merupakan solusi yang sia-sia karena Restsharp membuat serial kembali menjadi string yang harus kita mulai.

EDIT: Setelah membandingkan kode untuk AddJsonBody() vs AddBody(), berikut ini adalah solusi yang dapat digunakan untuk menambahkan JSON mentah ke badan permintaan:

request.AddParameter("application/json", rawJson, ParameterType.RequestBody);

Semua 3 komentar

Gunakan request.AddJsonBody sebagai gantinya.

Mencoba itu - deserialize meskipun sudah deserialized.
Saya menemukan solusinya. Harus menggunakan content-type = "text/plain" untuk mengirim teks mentah. Fakta bahwa teks diformat sebagai json tampaknya tidak masalah.

@hallem Menggunakan AddJsonBody tidak akan berfungsi, karena mengharapkan objek json. Sampai sekarang tidak ada cara untuk meneruskan string json mentah (AddBody, dan menyetel konten ke Json tidak berfungsi). Solusinya adalah mendapatkan string mentah, deserializing menjadi objek json, dan kemudian meneruskannya ke Restsharp AddJsonBody. Jelas merupakan solusi yang sia-sia karena Restsharp membuat serial kembali menjadi string yang harus kita mulai.

EDIT: Setelah membandingkan kode untuk AddJsonBody() vs AddBody(), berikut ini adalah solusi yang dapat digunakan untuk menambahkan JSON mentah ke badan permintaan:

request.AddParameter("application/json", rawJson, ParameterType.RequestBody);

Apakah halaman ini membantu?
0 / 5 - 0 peringkat