首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将json添加到RestSharp POST请求

如何将json添加到RestSharp POST请求
EN

Stack Overflow用户
提问于 2016-08-26 03:23:54
回答 3查看 36.8K关注 0票数 17

我将以下JSON字符串作为字符串参数- AddLocation(string LocationJSON)传递到我的c#代码中:

代码语言:javascript
复制
{"accountId":"57abb4d6aad4","address":{"city":"TEST","country":"TEST","postalCode":"TEST","state":"TEST","street":"TEST"},"alternateEmails":[{"email":"TEST"}],"alternatePhoneNumbers":[{"phoneNumber":"TEST"}],"alternateWebsites":[{"website":"TEST"}],"auditOnly":false,"busName":"593163b7-a465-43ea-b8fb-e5b967d9690c","email":"TEST EMAIL","primaryKeyword":"TEST","primaryPhone":"TEST","rankingKeywords":[{"keyword":"TEST","localArea":"TEST"}],"resellerLocationId":"5461caf7-f52f-4c2b-9089-2ir8hgdy62","website":"TEST"}

我尝试将JSON添加到类似这样的RestSharp POST请求中,但它不起作用:

代码语言:javascript
复制
public string AddLocation(string locationJSON)
{
    var client = new RestClient(_authorizationDataProvider.LocationURL);
    var request = new RestRequest(Method.POST);
    request.RequestFormat = DataFormat.Json;
    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("Authorization", _authorizationResponse.Token);
    ...
    request.AddJsonBody(locationJSON);
    var response = client.Execute(request);
}

返回的响应是"Bad Request“。下面是我在调试器中检查响应时得到的结果:

代码语言:javascript
复制
{"code":"invalid_json","details":{"obj.address":[{"msg":["error.path.missing"],"args":[]}],"obj.rankingKeywords":[{"msg":["error.path.missing"],"args":[]}],"obj.alternatePhoneNumbers":[{"msg":["error.path.missing"],"args":[]}],"obj.busName":[{"msg":["error.path.missing"],"args":[]}],"obj.accountId":[{"msg":["error.path.missing"],"args":[]}],"obj.alternateEmails":[{"msg":["error.path.missing"],"args":[]}],"obj.alternateWebsites":[{"msg":["error.path.missing"],"args":[]}],"obj.email":[{"msg":["error.path.missing"],"args":[]}],"obj.primaryKeyword":[{"msg":["error.path.missing"],"args":[]}],"obj.auditOnly":[{"msg":["error.path.missing"],"args":[]}]}}

在调用AddJsonBody之后,我检查了请求参数,值似乎包含双引号的转义序列-这似乎是问题所在。

代码语言:javascript
复制
{\"accountId\":\"57abb4d6aad4def3d213c25d\",\"address\":{\"city\":\"TEST\",\"country\":\"TEST\",\"postalCode\":\"TEST\",\"state\":\"TEST\",\"street\":\"TEST\"},\"alternateEmails\":[{\"email\":\"TEST\"}],\"alternatePhoneNumbers\":[{\"phoneNumber\":\"TEST\"}],\"alternateWebsites\":[{\"website\":\"TEST\"}],\"auditOnly\":false,\"busName\":\"84e7ef98-7a9f-4805-ab45-e852a4b078d8\",\"email\":\"TEST EMAIL\",\"primaryKeyword\":\"TEST\",\"primaryPhone\":\"TEST\",\"rankingKeywords\":[{\"keyword\":\"TEST\",\"localArea\":\"TEST\"}],\"resellerLocationId\":\"06b528a9-22a6-4853-8148-805c9cb46941\",\"website\":\"TEST\"}

所以我的问题是如何将json字符串添加到请求正文中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-26 12:07:16

我也遇到过这个问题。尝试这样的代码,而不是AddJsonBody

代码语言:javascript
复制
request.AddParameter("application/json", locationJSON, ParameterType.RequestBody);
票数 24
EN

Stack Overflow用户

发布于 2017-05-31 18:09:32

这应该是可行的:

代码语言:javascript
复制
request.AddParameter("application/json; charset=utf-8", JsonConvert.SerializeObject(yourObject), ParameterType.RequestBody);

如果您直接添加序列化对象,问题是Json转换会在each之前添加"\“。

票数 11
EN

Stack Overflow用户

发布于 2018-09-18 11:56:48

我已经尝试过了,它工作得很好,添加带有令牌的持有者

代码语言:javascript
复制
 request.AddHeader("cache-control", "no-cache");
 request.AddHeader("authorization", "Bearer " + "your token key");
 request.AddHeader("accept", "application/json");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39153250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档