Поставить звонка работает почтальоном, но не в RestSharp: плохое запросу


Я хочу вызвать конечную точку с помощью команды Put.

В Почтальоне

Я могу привести пример https://example.com/customers/106. Затем я добавляю тело типа application/json (под raw).

Когда я Put это тело до конечной точки, я получаю 200 OK.

Конечная точка, которую я использую, требует двух пользовательских заголовков и типа контента,который я сделал в заголовках. Поэтому я добавляю три заголовка: X-AppSecretToken, X-AgreementGrantToken и еще ... Content-Type (to application/json).

В RestSharp

Здесь я использую следующее. putstr - это то же самое тело I Put, что и в Postman:
 var restclient = new RestSharp.RestClient("https://example.com");
 var request = new RestRequest("/customers/" + customerId, Method.PUT);
 request.AddHeader("X-AppSecretToken", systemToken);
 request.AddHeader("X-AgreementGrantToken", userToken);
 request.AddHeader("Accept", "application/json");
 request.AddJsonBody(putstr);
 var response = restclient.Execute(request);

Теперь, когда я делаю это, я получаю следующий ответ, который является пользовательской ошибкой от API, который я вызываю:

"{"message":"Error converting value SOME STUFF}}\" to type 'eco.rest.Models.Customer'. Path '', line 1, position 605.","errorCode":"E00500","developerHint":"The JSON payload could not be parsed. The error message should give you a good indication of where the error is located. One common reason for this error is a missing '{' or a '}' in your payload.","logId":"123fc6fb4964a141f612ae8ae7571446","httpStatusCode":400,"logTime":"2018-05-20T21:56:56"}"

Как это исправить?

Обычно я никогда не задаю этот вопрос. Если бы кто-то другой спросил, я бы сказал: откройте Fiddler или аналогичный инструмент и посмотрите, насколько запросы отличаются.

У меня есть некоторые проблемы с этим, потому что это HTTPS.

Когда я отлаживаю свой код, я просто не вижу вызова внутри скрипача. Я тоже установил Чарльза, но тоже безрезультатно. Не знаю, в чем проблема.

Тем не менее, я подумал, что кто-то, кто читает это, вероятно, может решить эту проблему. Мои собственные предположения таковы: я, возможно, добавил заголовки неверно, тело JSON кодируется по-другому или похоже, но я действительно не уверен, как двигаться дальше. Надеюсь, кто-нибудь сможет помочь!
1 2

1 ответ:

Ваше значение putstr похоже на значение JSON.
AddJsonBody преобразует это значение JSON в другое значение JSON.

Вместо putstr следует использовать исходный объект.