为什么CasperJS中的POST请求响应数据为空,即使同一请求显示Postman中的数据

时间:2015-10-14 06:07:46

标签: javascript web-scraping phantomjs casperjs

如何针对POST请求问题解决CasperJS脚本?获取响应数据为空,即使相同的请求在POSTMAN中显示数据,但请求完全相同。

casper = require('casper').create({
    verbose         : true
    clientScripts   : ['includes/jquery-2.1.1.min.js']
});

casper.start();

var productId = casper.cli.get("productId");
var pageNum = casper.cli.get("pageNum");
var url = 'https://example.com/store/getreviews?authuser=0';

var data= {
 a:'val1',    
 b:'val2'

};

casper.thenOpen(
    url,
    {
        method: 'POST',
        data: data
    }
);

casper.then(function(response) {
    this.echo('Response: '+JSON.stringify(response,null,2));
    this.capture('this.png');
});

casper.run();

2 个答案:

答案 0 :(得分:1)

  

为什么CasperJS中的POST请求响应数据为空

PhantomJS不提供任何请求或响应的内容。您只能读取标题信息,状态代码和内容长度。您可以访问Slimer.js中的请求/响应正文。

  

如何针对POST请求问题解决CasperJS脚本?

Here是一些解决方法。

答案 1 :(得分:0)

使用此命令运行:casperjs --ssl-protocol = any example.js

 var casper = require('casper').create({
        verbose : true,
        logLevel :"debug"
    });

    casper.start();

    casper.then(function() {
        this.open('http://example.com/');
    });

    casper.then(function() {
        resp = this.evaluate(function() {
            var res = $.ajax({
                url: 'https://example.com/store/getreviews?authuser=0',
                method: 'POST',
                data: { 
                    a=val1,
                    b=val2
                },
                async: false
            });
            return res.responseText;
        });
    });

    casper.then(function() {
        console.log(resp);
    });

    casper.run();