我正在编写一些节点代码,用于模拟ASP.NET ajax客户端调用。它作为对服务器的http post请求,我设法使用OS X工具CocoaRestClient完美地设置请求标题和正文。使用此工具,服务器可以按预期完美响应。 当我尝试使用Node.js做同样的事情时,使用'request'模块,它会失败:
我的剧本:
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”: “真”
我做错了什么?我考虑使用网络嗅探工具来查看差异......
答案 0 :(得分:1)
json
param需要一个JavaScript对象并请求将它转换为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
param而不是json
,它也可能也是这样。更多详情:https://npmjs.org/package/request