将Node.js http post请求发送到ASP.NET ajax服务时出现问题

时间:2013-03-29 16:47:32

标签: node.js http post

我正在编写一些节点代码,用于模拟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”: “真”

我做错了什么?我考虑使用网络嗅探工具来查看差异......

1 个答案:

答案 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