我开始使用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
我的请求中没有发现任何错误,有人可以看到什么错误吗?
致谢
答案 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参数。
建议使用
AddJsonBody
或AddXmlBody
方法代替 类型为BodyParameter的AddParameter。这些方法将设置 正确的请求类型并为您完成序列化工作。
我认为您需要添加
request.AddJsonBody(model); // AddJsonBody serializes the object automatically