节点js使用原始请求正文

时间:2015-11-10 18:36:01

标签: node.js post

var req ={
      "request": {
        "header": {
          "username": "name",
          "password": "password"
        },
        "body": {
        "shape":"round"    
    }
      }
    };

    request.post(
        {url:'posturl',

        body: JSON.stringify(req),
        headers: { "content-type": "application/x-www-form-urlencoded"}
        },
        function (error, response, body) {        
            if (!error && response.statusCode == 200) {
                console.log(body)
            }
        }
    );

我想在req变量中发送原始请求体。它正在邮递员,但在节点js我无法发送原始json作为发布请求的请求主体。

3 个答案:

答案 0 :(得分:8)

您正在尝试发送JSON(您的req变量),但您正在将其解析为字符串(JSON.stringify(req))。由于您的路由期望JSON,它可能会失败并返回错误。请尝试以下请求:

request.post({
    url: 'posturl',
    body: req,
    json: true
}, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body)
    }
});

如果您要发送JSON,则可以添加选项json: true,而不是设置标题。

答案 1 :(得分:2)

Content-Type更改为application/json,因为您的身体是JSON格式。

答案 2 :(得分:0)

添加'内容长度'在正文中添加的字符串的标题中,将解决此问题。 它对我有用。

标题:{" Cache-Control":" no-cache"," Content-Type":" application / json; charset = UTF -8",'内容长度':req.length }