Javascript nodejs http.request如何向java接口发送json参数

Javascript nodejs http.request如何向java接口发送json参数,javascript,java,node.js,json,Javascript,Java,Node.js,Json,我们有一个java接口,可以向手机发送验证代码,在《邮差》上运行良好 我的nodejs代码如下 let test = { "phoneNumber": "15021071273", "smsParams": [ "注册", "123456", "注册" ], "tmplId": 109341 } var content = JSON.stri

我们有一个java接口,可以向手机发送验证代码,在《邮差》上运行良好

我的nodejs代码如下

let test = {
        "phoneNumber": "15021071273",
        "smsParams": [
            "注册",
            "123456",
            "注册"
        ],
        "tmplId": 109341
    }

    var content = JSON.stringify(test);

    // An object of options to indicate where to post to
    var post_options = {
        host: '172.16.211.33', //'common-message'
        port: '10011',
        path: '/sms/sendTecentyunSms',
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Content-Length': content.length
        }
    };

    // Set up the request
    var post_req = http.request(post_options, function (res) {
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            console.log('Response: ' + chunk);
        });
    });

    // post the data
    post_req.write(content);
    post_req.end();
以及java接口响应:

响应:{“timestamp”:1572935973619,“status”:400,“error”:“错误请求”,“异常”:“org.springframework.http.converter.httpMessageEndableException”,“消息”:“JSON解析错误:对象项内/之间的输入意外结束;嵌套异常为com.fasterxml.jackson.core.io.JsonEOFException:对象项内/之间的输入意外结束\n位于[源代码:java.io]。PushbackInputStream@3e497877;第1行,第157列],“路径”:“/sms/sendTecentyunSms”}

看起来这只是一个json解析错误

我还尝试先将tese.smsParams的JSON.stringy设置为无效

req.write仅接受字符串或缓冲区,因此它不能将json对象作为参数。

尝试以下方法:


    var content = JSON.stringify(test);

    // An object of options to indicate where to post to
    var post_options = {
        host: '172.16.211.33', //'common-message'
        port: '10011',
        path: '/sms/sendTecentyunSms',
        body:content,
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Content-Length': content.length
        }
    };

或者尝试
请求
模块

const request=require('request');
让测试={
“电话号码”:“15021071273”,
“smsParams”:[
"注册",
"123456",
"注册"
],
“tmplId”:109341
}
var content=JSON.stringify(测试);
//一个选项对象,用于指示要发布到的位置
var post_选项={
方法:“post”,
url:“http://172.16.211.33:10011/sms/sendTecentyunSms",
正文:内容
};
请求(post_选项,(错误、恢复、正文)=>{
if(err){return console.log(err);}
log(body.url);
console.log(body.explainion);
});
你可以玩它

请这样试试

var http = require('http')

var body = JSON.stringify({
        "phoneNumber": "15021071273",
        "smsParams": [
            "注册",
            "123456",
            "注册"
        ],
        "tmplId": 109341
    })

var request = new http.ClientRequest({
    hostname: "172.16.211.33",
    port: 10011,
    path: "/sms/sendTecentyunSms",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Content-Length": Buffer.byteLength(body)
    }
})

request.end(body)


request.on('response', function (response) {
  console.log('STATUS: ' + response.statusCode);
  console.log('HEADERS: ' + JSON.stringify(response.headers));
  response.setEncoding('utf8');
  response.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});
你能试着用test='{“phoneNumber”:“15021071273”,…}代替stringfy吗