nodejshttppost请求java后台数据,java端拿不到参数的问题
如下一个post请求var opts={
host:config.resultApi.host,
port:config.resultApi.port,
path:path,
method:"POST"
};
var post_data = querystring.stringify({a:1,b:2});
var str='';
var req = http.request(opts, function(res) {
res.setEncoding('utf8');
res.on('data',function(data){
str+=data;
}) ;
res.on("end",function(){
success(JSON.parse(str));
});
});
req.write(post_data);
req.on('error', function(e) {
console.log("Got error: " + e.message);
});
req.end();
这种情况下,当后台java接口是接受 一个个的参数的情况是没有问题的
publick api(String a,String b){
}
这个是没有问题的。但是如果接口参数太多无法一一列举出来,可能后端人员需要接受对象参数如:
publick api(Json b){
}
这个时候如果用上面的nodejs的代码,java这边是接受不到参数的。需要修改一下:
var opts={
host:config.resultApi.host,
port:config.resultApi.port,
path:path,
method:"POST"
};
if(path.indexOf("houseMapController/fuzzyMatch")!=-1){//某些接口,需要传obj对象
post_data ="key="+JSON.stringify({a:1,b:2}) ;
opts.headers={
'Content-Type':"application/x-www-form-urlencoded; charset=UTF-8"
}
}else{//其他保持不变
post_data = querystring.stringify({a:1,b:2});
}
var str='';
var req = http.request(opts, function(res) {
res.setEncoding('utf8');
res.on('data',function(data){
str+=data;
}) ;
res.on("end",function(){
success(JSON.parse(str));
});
});
req.write(post_data);
req.on('error', function(e) {
console.log("Got error: " + e.message);
});
req.end();
还没有完,java这边需要修改接口参数为:
publick api(String json){
//在函数中把json格式的字串转换成对象
}