使用 puppeteer 和 JSON 负载发出 POST 请求

nao*_*oru 5 node.js headless-browser puppeteer

我正在尝试使用 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();
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*orf 5

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

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

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

如果您需要提交 JSON 数据:

            'postData': JSON.stringify(request)
Run Code Online (Sandbox Code Playgroud)