我试图在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);
还有很多其他但不管我做什么,我总能得到同样的回应。
答案 0 :(得分:1)
如果请求方法为POST
,AddParameter
将在请求正文中添加您的参数(如果仅使用两个参数调用)。
如果您需要将参数放在查询字符串中,则需要明确指定:
request.AddParameter("apiKey", Common.API_KEY, ParameterType.QueryString);
// other segments omitted
request.AddJsonBody(objet);