Неподдерживаемый тип носителя с использованием библиотеки RestSharp - PullRequest
0 голосов
/ 29 мая 2019

Я начинаю использовать библиотеку RestSharp для подключения моего приложения Windows Forms к сети.

Я создал такой метод:

public static bool WebRequest(string route, string token, Method method, string model)
{
    var client = new RestClient("myapiurl");
    var request = new RestRequest(route, method);

    //"model" is a json
    request.AddParameter("application/json", model, ParameterType.GetOrPost);
    request.AddHeader("Accept", "application/json");
    request.AddHeader("Authorization", "Bearer " + token);
    request.RequestFormat = DataFormat.Json;

    IRestResponse response = client.Execute(request);

    var content = response.Content;

    return true;
}

Запрос имеет 3 параметра:

{ application/json={ "CommunicationType":4854,"JobNumber":55555,"NotificationAddress":"(714) 978-9788","CreatedBy":"user@mail.com","IsDeleted":false } }
{ Accept=application/json }
{ Authorization=Bearer dasjd... }

Но ответ всегда возвращает:

StatusCode: UnsupportedMediaType

Я не увидел ничего плохого в моем запросе, может кто-то увидеть, что не так?

С уважением

1 Ответ

0 голосов
/ 29 мая 2019

Добавить необходимо добавить тип содержимого в заголовок

request.AddHeader("content-type", "application/json");

получить ссылку GetOrPost: ParameterTypes для RestRequest

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

Имя параметра будет использоваться в качестве заголовка Content-Type для запроса.

RequestBody не работает с запросами GET или HEAD., поскольку они на самом деле не отправляют тело.

Если у вас также есть параметры GetOrPost, они будут перезаписывать RequestBody - RestSharp не будет их объединять, но вместо этого будет выбрасывать параметр RequestBody.

Рекомендуется использовать методы AddJsonBody или AddXmlBody вместо AddParameter с типом BodyParameter.Эти методы установят правильный тип запроса и выполнят сериализацию за вас.

Я думаю, вам нужно добавить

request.AddJsonBody(model); // AddJsonBody serializes the object automatically
...