node.js - 使用带有 JSON 负载的 puppeteer 发出 POST 请求

标签 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 请求(没有负载)及其工作

最佳答案

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

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

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

如果您需要提交 JSON 数据:

            'postData': JSON.stringify(request)

关于node.js - 使用带有 JSON 负载的 puppeteer 发出 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048414/

相关文章:

node.js - 如何使用 express 保留数据库的一个实例

javascript - POST 请求到本地运行的 node.js 脚本

javascript - 基于属性错误的 Puppeteer 选择器

javascript - 使用 casper/phantomjs 输出客户端控制台

javascript - 如何使用cheerio获取下一个文本 Node

javascript - 使用 angularjs , nodejs , expressjs 单击按钮后在前端下载 Csv 文件

puppeteer - 遍历链接(故事)并截取屏幕截图

javascript - Puppeteer:下拉选择后等待请求完成

node.js - 如何使用 puppeteer 和 Node js 生成 pdf 页面的屏幕截图

linux - 将测试从 Windows 转移到 Linux 服务器 - Selenium