2017-03-06 7 views
-1

json 게시 요청 작동을 시도 중입니다. 오류는 요청 본문에있는 오류 응답과 같습니다. Cant가 이유를 알아내는 것 같습니다. POSTMAN을 통해 동일한 요청 본문 문자열을 게시하면 성공 응답을받습니다. 요청이 처리되는 부분에서 C# json POST 요청 400 오류

var bodyData = new 
{ 
id = "1234567", 
eventType = "create", 
userId = "account-70540" 
} 
var js = new JavaScriptSerializer(); 
string reqBody = js.Serialize(bodyData); 

:

HttpWebRequest request = WebRequest.Create(reqUrl) as HttpWebRequest; 
request.Method = "POST";     
request.ContentType = "application/json"; 
request.Headers.Set("x-tracking-id", "12345"); 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

마지막 라인은 예외를 유발하고 JSON 복호화 동안은 400 잘못된 request.Unexpected 오류가 : 메시지 엔티티 입력하세요.

문자열 reqBody를 복사하여 우편 배달부의 본문으로 사용하면 작동합니다. 내가 빠진 것을 도와 주실 수 있겠습니까?

+1

reqBody를 요청 개체에 연결하는 위치가 표시되지 않습니다 .... – MindingData

+0

@MindingData - 감사합니다. 나는 요청 시체에 너무 중점을 두어 시체를 붙이지 않는 기본적인 실수를 보았다. 너는 최고야! – Mathew

답변

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

public static string PostJsonSync(string url, object obj) {  
    var httpWebRequest   = (HttpWebRequest)WebRequest.Create(url); 
    httpWebRequest.ContentType = "application/json"; 
    httpWebRequest.Method  = "POST"; 

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { 
     var json = JsonConvert.SerializeObject(obj); 
     streamWriter.Write(json); 
     streamWriter.Flush(); 
     streamWriter.Close(); 
    } 

    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { 
     var result = streamReader.ReadToEnd(); 

     return result; 
    } 
} 

* 참고 : 그것은 직렬화 json.net를 사용합니다.

+0

스 니펫에 대해 감사드립니다. 매우 감사! – Mathew