私のコードは、ローカルのNode.jsサーバーからColdfusion APIにデータをポストしようとしています。私はAPIと通信し、リクエストヘッダーを通して自分自身を認証することができました。しかし、構造体を正しく取得できないため、JSONオブジェクトを実際に渡すのが難しいです。クエリ文字列内のネストされたオブジェクトをポストする - Node.js
APIはリクエストモジュールのJSONオプションを受け入れないため、これは私の最も簡単なオプションです。
APIには、次のことを期待している:
{
'source': {
'customer': {
'customerlogin': 'myusername',
'customerpassword': 'mypassword',
}
}
}
私はハード私のポストに(他の誰かによって成功でポストから)以下の身体パラメータをコーディングした場合、私のコードは動作します。
var Jrequest = require('request');
var options = {
uri: 'http://myAPI/customerSSO.json',
headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': something', 'Timestamp': timestamp},
method: 'POST',
body: 'source=%7B%0D%0A++%22customer%22%3A+%7B%0D%0A++++%22customerlogin%22%3A+%22myusername%22%2C%0D%0A++++%22customerpassword%22%3A+%22mypassword%22%2C%0D%0A%09%22success%22%3A+%22%22%0D%0A++%7D%0D%0A%7D' // Working
};
Jrequest(options, function (error, response, body){
res.send(body);
});
Iは、例えば、json.stringifyのための他の方法、(経由JSONを送信する場合)、それは「ソースが必要ですが定義されていない」という理由で拒否されます。
だから、私はこの
'source=%7B%0D%0A++%22customer%22%3A+%7B%0D%0A++++%22customerlogin%22%3A+%22myusername%22%2C%0D%0A++++%22customerpassword%22%3A+%22mypassword%22%2C%0D%0A%09%22success%22%3A+%22%22%0D%0A++%7D%0D%0A%7D'
のように見えるものにJSONを回すか、または私は別のオプションを見落としているかのNode.jsで、私の質問があると仮定しますか?
誤った用語を使用した場合は、何か助けて謝罪してくれてありがとう。私は、これは動作するはずだと思う
これは完璧です、ありがとうございます。 – Longshot
別のオプションは、 'querystring'モジュールの代わりに' encodeURIComponent'を使用することです。いずれかの賛否両論があるかどうかは分かりません。ああ、ちょうど.QueryStringメソッドを呼び出し、 'function(str){return encodeURIComponent(str);}を取得しました。 } ' - それでは違いはありません:) – Pebbl
@pebbl duhは、それについても考えていませんでした。私はうまく動くはずです。 – robertklep