Json formátum HTTP request küldésnél

Json formátum HTTP request küldésnél
2022-05-03T14:14:55+02:00
2022-05-04T09:40:37+02:00
2022-10-15T21:21:09+02:00
WorkingClassHero
Sziasztok


C# - RestSharp kombinációval csinálok egy API tesztet, egy kisállatkereskedés API felületére.

A feladatot a következő linken találtam :

Pelda

GET-tel ki tudom venni az állatok listáját az adatbázisból, de a POST nem megy.

A response kiértékelésénél látom, hogy hiba van, gondolom, a JSON van rosszul formázva, de nem értem, miért.

Ez a JSON posztolása : 

request.AddJsonBody("{"id":0,"category":{"id":0,"name":"Dog"},"name":"Sccoby-Doo","photoUrls":["http://blog.qa-services.dev"],"tags":[{"id":0,"name":"QA-SERVICES"}],"status":"available"}");
Ez majdnem olyan, mint ahogy a webkapon van, de szerintem ide be kellett tenni egy id:0-t az elejére, illetve korábban ezt a feladatot megcsináltam Java-RestAssured-del, és ott kellett az id:0 az elejére, tehét a weblapon szerintem rosszul van irva. 
Ez a response : 

{"code":500,"type":"unknown","message":"something bad happened"}
A Java megoldásnál azt csináltam, hogy Json fileba tettem a küldendő adatot, azaz nem beirtam a kodba, De most a kódba akarom beirni. Ez a teljes kódom, ami az 500-as hibát adja futtatáskor, Mi lehet a hiba ?

using System; using System.Threading.Tasks; using System.Net.Http; using RestSharp; using RestClient; using System.Text.Json; namespace RestSharpTest { class Program { private static readonly HttpClient client = new HttpClient(); private static async Task ProcessRepositories() { string url = "https://petstore.swagger.io"; var restclient = new RestSharp.RestClient(url); var request = new RestSharp.RestRequest("/v2/pet", Method.Post); request.AddHeader("Accept", "application/json"); request.AddJsonBody("{"id":0,"category":{"id":0,"name":"Dog"},"name":"Sccoby-Doo","photoUrls":["http://blog.qa-services.dev"],"tags":[{"id":0,"name":"QA-SERVICES"}],"status":"available"}"); var response = await restclient.ExecuteAsync(request); Console.WriteLine(response.Content); } static async Task Main(string[] args) { await ProcessRepositories(); } } }
Mutasd a teljes hozzászólást!
Az AddJsonBody C# objektumot vár el, amit szerializálni fog. Ha megnézed Fiddlerben a beküldött request-et:

POST https://petstore.swagger.io/v2/pet HTTP/1.1 Host: petstore.swagger.io Accept: application/json User-Agent: RestSharp/107.3.0.0 Accept-Encoding: gzip, deflate, br Content-Type: application/json; charset=utf-8 Content-Length: 317 "{\u0022id\u0022:0,\u0022category\u0022:{\u0022id\u0022:0,\u0022name\u0022:\u0022Dog\u0022},\u0022name\u0022:\u0022Sccoby-Doo\u0022,\u0022photoUrls\u0022:[\u0022http://blog.qa-services.dev\u0022],\u0022tags\u0022:[{\u0022id\u0022:0,\u0022name\u0022:\u0022QA-SERVICES\u0022}],\u0022status\u0022:\u0022available\u0022}"
Helyesen a kódod:

request.AddJsonBody( new { id = 0, category = new { id = 0, name = "Dog" }, name = "Sccoby-Doo", photoUrls = new string[] {"http://blog.qa-services.dev"}, tags = new[] { new { id = 0, name = "QA-SERVICES" } }, status = "available" } );
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd