我应该如何在http post请求的请求有效负载中传递json数据
Posted
技术标签:
【中文标题】我应该如何在http post请求的请求有效负载中传递json数据【英文标题】:How should I pass json data in the request payload of http post request 【发布时间】:2013-04-17 18:38:27 【问题描述】:我想知道,如何在payload中传递json请求,例如:'name' : 'test', 'value' : 'test'
:
var post_data = ;
var post_options =
host: this._host,
path: path,
method: 'POST',
headers:
Cookie: "session=" + session,
'Content-Type': 'application/json',
'Content-Length': post_data.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(post_data);
post_req.end();
【问题讨论】:
这能回答你的问题吗? ***.com/questions/4505809/… 【参考方案1】:使用request 模块
npm install -S request
var request = require('request')
var postData =
name: 'test',
value: 'test'
var url = 'https://www.example.com'
var options =
method: 'post',
body: postData,
json: true,
url: url
request(options, function (err, res, body)
if (err)
console.error('error posting json: ', err)
throw err
var headers = res.headers
var statusCode = res.statusCode
console.log('headers: ', headers)
console.log('statusCode: ', statusCode)
console.log('body: ', body)
)
【讨论】:
我想在这里和你核实一些事情。 'body: postData' 是否正确或应该将 postData 字符串化,如 'body: JSON.stringify(postData); ?谢谢。 @Noah 如果我想使用request.post(...)
,会有什么变化?客户端应用程序(Electron 应用程序)将发送的大多数请求都包含基于 JSON 的主体,唯一的例外是多部分主体。我在想出在 Express(服务器端)应用程序中使用此库和 bodyParser
设置的正确方法时遇到了麻烦。我使用app.use(bodyParser.json())
和app.use(bodyParser.urlencoded( extended: true ));
并且请求无法解析,直到我将extended
更改为false。不确定这与 JSON 请求有什么关系,这是我感到困惑的原因。
@Ric 通常你是对的,但是添加 json: true
让请求知道它应该在发送之前对有效负载进行字符串化。【参考方案2】:
只需转换为字符串并发送即可。
post_req.write(JSON.stringify(post_data));
【讨论】:
【参考方案3】:我试过了,它似乎可以工作。我需要基本的身份验证,所以我已经包含了身份验证,如果你不需要它,你可以丢弃它。
var value = email:"",name:"";
var options =
url: 'http://localhost:8080/doc/',
auth:
user: username,
password: password
,
method :"POST",
json : value,
;
request(options, function (err, res, body)
if (err)
console.dir(err)
return
console.dir('headers', res.headers)
console.dir('status code', res.statusCode)
console.dir(body)
);
【讨论】:
以上是关于我应该如何在http post请求的请求有效负载中传递json数据的主要内容,如果未能解决你的问题,请参考以下文章
Apache HTTP/2 客户端 5.0 POST 请求缺少有效负载/内容