0

ASP.NET ajax クライアント呼び出しをシミュレートするノード コードを作成しています。これはサーバーへの http ポスト リクエストとして作成され、OS X ツールCocoaRestClientを使用してリクエスト ヘッダーとボディを完全にセットアップすることができました。このツールを使用すると、サーバーは期待どおりに完全に応答します。「request」モジュールを使用して Node.js で同じことをしようとすると、失敗します。

私のスクリプト:

var request = require('request');

request.post({
    'uri': 'http://[The Url]/[The Service].asmx/[The Operation]',
    'json': '{"callbackcontextkey":"[the context key]",[The set of json formatted key/value pairs] }',
    'headers': { }
}, function(e, r, body) {
    console.log("Response error: %j", e);
    console.log("Response r: %j", r);
    console.log("Response body: %j", body);
});

CocoaRestClient ツールを使用している場合、指定するのは Content-Type (application/json) パラメーターと、コードで指定された要求本文 ('json' 属性値) だけです。私のコードは、サーバー側にこれを返すようにします:

「リクエストの処理中にエラーが発生しました。」

また、応答でこれを見ることができます:

"jsonerror":"真"

私は何を間違っていますか?ネットワークスニッフィングツールを使用して違いを確認することを検討しています...

4

1 に答える 1

1

パラメータはjsonJavaScript オブジェクトを想定しており、リクエストはそれを JSON 文字列に変換します。

次のように引用符を削除してみてください。

var request = require('request');

request.post({
    'uri': 'http://[The Url]/[The Service].asmx/[The Operation]',
    'json': {"callbackcontextkey":"[the context key]",[The set of json formatted key/value pairs] },
    'headers': { }
}, function(e, r, body) {
    console.log("Response error: %j", e);
    console.log("Response r: %j", r);
    console.log("Response body: %j", body);
});

または、文字列として保持し、body代わりにパラメーターを設定するjsonこともできます。おそらくそのようにも機能します。詳細はこちら: https://npmjs.org/package/request

于 2013-03-29T21:13:40.030 に答える