我是asp.net开发者。我使用Square Connect Api进行支付交易。以下是我的充值卡nonce代码。但我收到错误(不支持的媒体类型\“application / x-www-form-urlencoded \”,只允许[application / json])作为回应。解决方案表示赞赏。
Square Connect REquest :::
RestSharp.RestClient Client = new RestSharp.RestClient("https://connect.squareup.com");
RestSharp.RestRequest Request = new RestSharp.RestRequest("v2/locations/"+LocationId+"/transactions", RestSharp.Method.POST);
Request.RequestFormat = RestSharp.DataFormat.Json;
Request.AddHeader("Authorization", "Bearer " + access_token);
Request.AddHeader("Accept", "application/json");
Request.AddHeader("Content-Type", "application/json");
Request.AddParameter("name", "test");
Request.AddParameter("card_nonce", card_nonce);
Request.AddParameter("amount_money", "{\"amount\":100,\"currency\":\"USD\"}");
//Request.AddParameter("idempotency_key", Guid.NewGuid().ToString());
RestSharp.IRestResponse response = Client.Execute(Request);
System.Net.HttpStatusCode getresponse = response.StatusCode;
正方形反应: {“errors”:[{“category”:“INVALID_REQUEST_ERROR”,“code”:“BAD_REQUEST”,“detail”:“不支持的媒体类型\”application / x-www-form-urlencoded \“,只有[application / json]允许“}}}
答案 0 :(得分:0)
(公平警告我以前没有使用过RestSharp的经验。)
在使用正文(即POST或PUT)创建请求时,您必须使用AddParameter
方法设置请求的内容类型,而不是使用{{1方法。
正如this answer所示,当您的请求有正文时,您只需拨打AddHeader
一次:
AddParameter
第一个参数指定内容类型,第二个参数是要POST的整个 JSON字符串,第三个参数表示JSON字符串应该用作请求正文。
这意味着在调用此方法之前,您需要构造要POST的JSON字符串。