使用RestSharp库的媒体类型不受支持

时间:2019-05-28 23:10:44

标签: c# restsharp

我开始使用RestSharp库将Windows Forms应用程序与Web连接起来。

我创建了这样的方法:

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... }

但是响应始终返回:

  

状态码:UnsupportedMediaType

我的请求中没有发现任何错误,有人可以看到什么错误吗?

致谢

1 个答案:

答案 0 :(得分:0)

添加需要在标题中添加内容类型

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

get reference GetOrPost:ParameterTypes for RestRequest

  

RequestBody如果设置了此参数,则其值将作为   请求的正文。仅接受一个RequestBody参数-   第一个。

     

参数名称将用作Content-Type标头   请求。

     

RequestBody不适用于GET或HEAD请求,因为它们不起作用   实际发送尸体。

     

如果您还具有GetOrPost参数,它们将覆盖   RequestBody-RestSharp不会合并它们,而是   扔掉RequestBody参数。

     

建议使用AddJsonBodyAddXmlBody方法代替   类型为BodyParameter的AddParameter。这些方法将设置   正确的请求类型并为您完成序列化工作。

我认为您需要添加

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