首页 > 解决方案 > 使用带有 JSON 有效负载的 puppeteer 发出 POST 请求

问题描述

我正在尝试使用 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 请求(没有有效负载)及其工作

标签: node.jspuppeteerheadless-browser

解决方案


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

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

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

如果您需要提交 JSON 数据:

            'postData': JSON.stringify(request)

推荐阅读