2015-11-10 12 views
6
var req ={ 
     "request": { 
     "header": { 
      "username": "name", 
      "password": "password" 
     }, 
     "body": { 
     "shape":"round"  
    } 
     } 
    }; 

    request.post(
     {url:'posturl', 

     body: JSON.stringify(req), 
     headers: { "content-type": "application/x-www-form-urlencoded"} 
     }, 
     function (error, response, body) {   
      if (!error && response.statusCode == 200) { 
       console.log(body) 
      } 
     } 
    ); 

私はreq変数で生のリクエストボディを送りたいと思います。それは郵便配達員で働いていますが、ノードjsで私は未処理jsonを投稿依頼の依頼主体として送ることができません。ノードjsは生のリクエストボディで投稿要求を送信します

+0

エラーは何ですか? JSONを送信しているので、あなたの '' content-type ': "application/x-www-form-urlencoded" 'は間違っていますか?それは 'application/json'でなければなりません。 –

+0

POST /HTTP/JSON/Prices/GetPriceSheet.aspx HTTP/1.1 ホスト:host.com のContent-Type:アプリケーション/ x-www-form-urlencodedで のCache-Control:キャッシュなし { "リクエスト": {"header":{"username": "name"、 "password": "pw"}、 "body":{"shape": "round"}}}これは郵便配達員に働いているリクエストプレビューです。だから私はヘッダにx-www-form-urlencodedが必要ですが、raw jsonデータも送信します。私が得ているエラーは、休憩サービスから間違った形式です。 –

答えて

2

体がJSON形式であるため、Content-Typeapplication/jsonに変更してください。

+0

"content-type": "application/x-www-form-urlencoded"もヘッダーの要件です。 –

+0

その後、あなたの体をJSONではなくその形式に変更する必要があります。 –

+0

はい、私は、コンテンツタイプに応じてjsonが必要ではなく、クエリ文字列のデータは必要ないと思っています。私はx-www-formの形式を理解しようとします。ありがとう。 –

5

JSON(変数req)を送信しようとしていますが、文字列(JSON.stringify(req))として解析しています。あなたのルートはJSONを期待しているので、おそらく失敗してエラーを返します。以下のリクエストをお試しください:あなたはJSONを送信する場合

request.post({ 
    url: 'posturl', 
    body: req, 
    json: true 
}, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body) 
    } 
}); 

の代わりに、あなたのヘッダを設定し、あなただけのオプションjson: trueを追加することができます。

0

本文に追加された文字列のヘッダーに「Content-Length」を追加すると、この問題が解決されます。 それは私のために働いた。

ヘッダー:{ "のCache-Control": "ノーキャッシュ"、 "コンテンツタイプ": "アプリケーション/ JSON;のcharset = UTF-8" 'のContent-Length':req.length}

関連する問題