Call call работает в PostMan, но не в RestSharp: получение неверного запроса - PullRequest
0 голосов
/ 20 мая 2018

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

В Почтальоне

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

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

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

В RestSharp

Здесь я использую следующее.putstr - это то же самое тело, что и я Put, что и в Почтальоне:

 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.

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

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

1 Ответ

0 голосов
/ 21 мая 2018

Ваше значение putstr представляется значением JSON.
AddJsonBody преобразует это значение JSON в другое значение JSON.

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

...