使用带有JSON负载的puppeteer发出POST请求

时间:2018-10-29 15:09:10

标签: node.js puppeteer headless-browser

我正在尝试使用puppeteer发出POST请求并在请求中发送JSON对象,但是,我正在超时...如果我试图发送至少一个收到无效请求的服务器回复... 这是代码的相关部分

await page.setRequestInterception(true);
    const request = {"mac": macAddress, "cmd": "block"};
    page.on('request', interceptedRequest => {

        var data = {
            'method': 'POST',
            'postData': request
        };

        interceptedRequest.continue(data);
    });
    const response = await page.goto(configuration.commandUrl);     
    let responseBody = await response.text();

我正在使用相同的代码来发出GET请求(没有有效负载)及其工作

2 个答案:

答案 0 :(得分:2)

postData需要被编码为表单数据(格式为key1=value1&key2=value2)。

您可以自己创建字符串,也可以使用内置模块querystring

const querystring = require('querystring');
// ...
        var data = {
            'method': 'POST',
            'postData': querystring.stringify(request)
        };

如果您需要提交JSON数据:

            'postData': JSON.stringify(request)

答案 1 :(得分:0)

如果要发送json,则需要添加“ content-type”:“ application / json”。如果不发送,您将收到一个空的答复。

var data = {
    method : 'POST',
    postData: '{"test":"test_data"}',
    headers: { ...interceptedRequest.headers(), "content-type": "application/json"}
};
interceptedRequest.continue(data);