C# Restsharp标题始终设置为“0”;应用程序/x-www-form-urlencoded“;应要求
我试图在Xamarin中通过REST POST请求发送json数据,但无论我尝试什么,我总是在响应中收到以下错误: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”时,响应正常 但在我的代码中,它永远不起作用。 我试过这个方
{ "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,这是今天学到的。谢谢。它起作用了。非常感谢你。费德里科,我已经在这个问题上纠缠了好几天了!非常感谢。