2016-08-25 3 views
4

나는 다음과 같은 JSON의 문자열 매개 변수로 내 C# 코드로 전달되는 문자열이 - AddLocation (문자열 locationJSON) :RestSharp POST 요청에 JSON을 추가하는 방법

{"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 요청에 있지만 작동하지 않습니다 :

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); 
} 

응답은 다시 "잘못된 요청"으로되어 있습니다. 여기에 내가 디버거에서 반응 검사 만약 내가 무엇을 얻을 : 나는 AddJsonBody를 호출 한 후 요청 매개 변수를 검사 한

{"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":[]}]}} 

및 값은 큰 따옴표에 대한 이스케이프 시퀀스를 포함하는 것으로 보인다 - 문제가 될 것으로 보인다 .

{\"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 문자열을 추가합니까?

답변

5

나는이 문제도 다루었 다. AddJsonBody 대신 다음과 같이 시도해보십시오.

request.AddParameter("Application/Json", locationJSON, ParameterType.RequestBody); 
4

이 작동합니다 : 당신이 직접 직렬화 된 객체를 추가하는 경우

request.AddParameter("application/json; charset=utf-8", JsonConvert.SerializeObject(yourObject), ParameterType.RequestBody); 

이 문제가 JSON 변환은 "각 전에"\ "을 추가입니다

을.
관련 문제