Restsharp标题始终设置为" application / x-www-form-urlencoded"在POST请求

时间:2017-05-25 10:42:20

标签: c# json rest xamarin restsharp

我试图在Xamarin中使用REST POST请求发送json数据,但无论我尝试什么,我总是会收到此错误:

{ "message" : "Unexpected Content-Type 'application/x-www-form-urlencoded', expecting 'application/json'."}

我使用此网站测试了我的请求:https://resttesttest.com/并且标题设置为"Content-Type", "application/json"时回复正常。

但在我的代码中,它永远不会工作。 我试过这个方法:

var request = new RestRequest("api/1/databases/{db}/collections/{coll}", Method.POST);
request.AddParameter("apiKey", Common.API_KEY);
request.AddUrlSegment("db", Common.DB_NAME);
request.AddUrlSegment("coll", collection);
request.AddHeader("Accept", "application/json");
request.AddParameter("application/json", JsonConvert.SerializeObject(objet), ParameterType.RequestBody);

这一个:

var request = new RestRequest("api/1/databases/{db}/collections/{coll}", Method.POST);
request.AddParameter("apiKey", Common.API_KEY);
request.AddUrlSegment("db", Common.DB_NAME);
request.AddUrlSegment("coll", collection);
request.AddHeader("content-type", "application/json; charset=utf-8");
if (objet != null)
    request.AddJsonBody(objet);

还有很多其他但不管我做什么,我总能得到同样的回应。

1 个答案:

答案 0 :(得分:1)

如果请求方法为POSTAddParameter将在请求正文中添加您的参数(如果仅使用两个参数调用)。

如果您需要将参数放在查询字符串中,则需要明确指定:

request.AddParameter("apiKey", Common.API_KEY, ParameterType.QueryString);
// other segments omitted
request.AddJsonBody(objet);