C# Restsharp标题始终设置为“0”;应用程序/x-www-form-urlencoded“;应要求

C# Restsharp标题始终设置为“0”;应用程序/x-www-form-urlencoded“;应要求,c#,json,rest,xamarin,restsharp,C#,Json,Rest,Xamarin,Restsharp,我试图在Xamarin中通过REST POST请求发送json数据,但无论我尝试什么,我总是在响应中收到以下错误: { "message" : "Unexpected Content-Type 'application/x-www-form-urlencoded', expecting 'application/json'."} 我用这个网站测试了我的请求:当标题设置为“Content Type”,“application/json”时,响应正常 但在我的代码中,它永远不起作用。 我试过这个方

我试图在Xamarin中通过REST POST请求发送json数据,但无论我尝试什么,我总是在响应中收到以下错误:

{ "message" : "Unexpected Content-Type 'application/x-www-form-urlencoded', expecting 'application/json'."}
我用这个网站测试了我的请求:当标题设置为
“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);

还有许多其他方法,但无论我做什么,我总是得到相同的响应。

如果请求方法是
POST
AddParameter
将在请求体中添加您的参数(如果仅使用两个参数调用)

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

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

AddParameter
将在
POST
请求中的请求正文中添加您的参数(使用
application/x-www-form-urlencoded
作为内容类型)。哪里需要
apiKey
?我需要将我的
apiKey
作为查询参数传递,以访问我的数据抛出mLab REST API。下面是一个示例:
https://api.mlab.com/api/1/databases?apiKey=2E81PUmPFI84t7UIc_5YdldAp1ruUPKye
这是
内容类型
而不是
内容类型
@spender标题名是@FedericoDipuma,这是今天学到的。谢谢。它起作用了。非常感谢你。费德里科,我已经在这个问题上纠缠了好几天了!非常感谢。