2017-03-06 13 views
-1

jsonポストリクエストを取得しようとすると動作します。エラーは、エラー応答ごとに要求本体にあるようです。カントはその理由を理解しているようだ。私が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エラーを取得:MessageエンティティBeanは、空にすることはできません。

もし私が文字列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

関連する問題