在phantomjs中解析帖子数据[英] Parsing post data in phantomjs

问题描述

我正在使用 chrome 的 POSTMAN 扩展,并尝试向 phantomjs 发送一个发布请求我已经通过在附加的屏幕截图中设置邮递员,设法向 phantomjs 服务器脚本发送一个发布请求在此处输入图片描述

我的phantomjs脚本如下:

// import the webserver module, and create a server
var server = require('webserver').create();
var port = require('system').env.PORT || 7788;     

console.log("Start Application");
console.log("Listen port " + port);    

// Create serever and listen port 
server.listen(port, function(request, response) {    

      console.log("request method: ", request.method);  // request.method POST or GET     

      if(request.method == 'POST' ){
                       console.log("POST params should be next: ");
                       console.log(request.headers);
                    code = response.statusCode = 200;
                    response.write(code);
                    response.close();

                }
 });  

当我在命令行运行 phantomjs 时,输出如下:

$ phantomjs.exe myscript.js
Start Application
Listen port 7788
null
request method:  POST
POST params should be next:
[object Object]
POST params:  1=bill&2=dave

所以,它似乎确实有效.我现在的问题是如何将帖子正文解析为变量,以便我可以在脚本的其余部分中访问它.

推荐答案

要读取 post 数据,不应该使用 request.headers,因为它是 HTTP 标头(编码、缓存、cookie...)

here 所说,您应该使用 request.post 或 request.postRaw.

request.post 是一个 json 对象,因此您将其写入控制台.这就是你得到 [object Object] 的原因.记录时尝试应用 JSON.stringify(request.post).

由于request.post是一个json对象,你也可以直接使用索引器读取属性(如果属性没有贴出来别忘了加个基本检查)

这是您脚本的更新版本

// import the webserver module, and create a server
var server = require('webserver').create();
var port = require('system').env.PORT || 7788;

console.log("Start Application");
console.log("Listen port " + port);

// Create serever and listen port 
server.listen(port, function (request, response) {

    console.log("request method: ", request.method);  // request.method POST or GET     

    if (request.method == 'POST') {
        console.log("POST params should be next: ");
        console.log(JSON.stringify(request.post));//dump
        console.log(request.post['1']);//key is '1'
        console.log(request.post['2']);//key is '2'
        code = response.statusCode = 200;
        response.write(code);
        response.close();
    }
});

本文地址:https://www.itbaoku.cn/post/1740053.html