Restsharp: تعذر نشر JSON خام

تم إنشاؤها على ١٧ يونيو ٢٠١٥  ·  3تعليقات  ·  مصدر: restsharp/RestSharp

أنا جديد على RESTSharp - وجديد نسبيًا على REST بشكل عام. لقد اختبرت مكالمة الخدمة هذه في Postman وهي تعمل بشكل جيد مع نفس الإدخال ولكن فقط عندما يتم تمرير سلسلة json كنص خام.

تقوم الخدمة بإرجاع خطأ خادم داخلي: "لم يتم تمرير المعلمة المتوقعة" النهج ".

            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;

التعليق الأكثر فائدة

hallem لن يعمل استخدام AddJsonBody ، لأنه يتوقع كائن json. اعتبارًا من الآن ، لا توجد طريقة لتمرير سلسلة json خام (لا يعمل AddBody ، وتعيين المحتوى على Json). الحل هو الحصول على السلسلة الأولية ، وإلغاء التسلسل إلى كائن json ، ثم تمرير ذلك إلى Restsharp AddJsonBody. بالتأكيد حل بديل هدر لأن Restsharp يعيد التسلسل إلى سلسلة كان علينا أن نبدأ بها.

تحرير: بعد مقارنة التعليمات البرمجية لـ AddJsonBody () مقابل AddBody () ، فإن ما يلي هو الحل البديل الذي يمكن استخدامه لإضافة JSON خام إلى نص الطلب:

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

ال 3 كومينتر

استخدم request.AddJsonBody بدلاً من ذلك.

حاولت ذلك - تقوم بإلغاء تسلسلها على الرغم من إلغاء تسلسلها بالفعل.
لقد وجدت الحل. اضطررت إلى استخدام نوع المحتوى = "نص / عادي" لإرسال نص خام. من الواضح أن تنسيق النص بتنسيق json لا يهم.

hallem لن يعمل استخدام AddJsonBody ، لأنه يتوقع كائن json. اعتبارًا من الآن ، لا توجد طريقة لتمرير سلسلة json خام (لا يعمل AddBody ، وتعيين المحتوى على Json). الحل هو الحصول على السلسلة الأولية ، وإلغاء التسلسل إلى كائن json ، ثم تمرير ذلك إلى Restsharp AddJsonBody. بالتأكيد حل بديل هدر لأن Restsharp يعيد التسلسل إلى سلسلة كان علينا أن نبدأ بها.

تحرير: بعد مقارنة التعليمات البرمجية لـ AddJsonBody () مقابل AddBody () ، فإن ما يلي هو الحل البديل الذي يمكن استخدامه لإضافة JSON خام إلى نص الطلب:

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

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات