javascript - 如何将文本添加到 CasperJS thenOpen() POST 请求的正文

标签 javascript http-post casperjs

我需要在 datorama.com 内编写一个脚本来访问 pardot.com。 Pardot 确实有一个 API,需要一个请求,该请求在正文中包含一个请求,如

帖子:https://pi.pardot.com/api/login/version/3
邮件正文:email=&password=&user_key=

现在这是我的代码:

phantom.casperPath = casperPath;
phantom.injectJs(casperPath + "/bin/bootstrap.js");

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

casper.start().thenOpen('https://pi.pardot.com/api/login/version/3',{ 
    method: 'post',
    content: { 
        'text' : 'email=<myemail>&password=<password>&user_key=<userKey>'
    }
}, function(response) {
     this.echo(this.getHTML());
});

casper.run();

我可以看出它正在连接到服务器,因为它正在响应 this.echo(this.getHTML()); “登录失败” 。我正在使用正确的电子邮件/密码/user_Key,因为我从 Pardot 的 API 控制台中提取它并且它在那里工作......所以我相信问题是我没有正确设置请求的正文。

那么有人知道如何在请求上设置正文吗?

最佳答案

casper.open()casper.thenOpen() 不理解 content 设置。您可能想使用数据:

casper.start()
    .thenOpen('https://pi.pardot.com/api/login/version/3', { 
        method: 'post',
        data: 'email=<myemail>&password=<password>&user_key=<userKey>'
    }, function() { ... });

如果您自己构建字符串,请不要忘记对电子邮件、密码和用户 key 参数使用 encodeURIComponent()

您还可以传递一个对象:

casper.start()
    .thenOpen('https://pi.pardot.com/api/login/version/3', { 
        method: 'post',
        data: {
            email: '<myemail>',
            password: '<password>',
            user_key: '<userKey>'
        }
    }, function() { ... });

如果您希望 API 提供 HTML 之外的其他内容,那么您应该使用 casper.getPageContent() 而不是 casper.getHTML()

关于javascript - 如何将文本添加到 CasperJS thenOpen() POST 请求的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996275/

相关文章:

java - 如何将 HTTP 发布到 CGI 脚本

casperjs 传递参数来评估失败

javascript - 使用 webapack 4 为每个条目创建 vendor.bundle

selenium - 机器人框架 : How to retrieve the answer of a request

php - 如何从android向mysql服务器发送数据?

javascript - 为什么 this.evaluate 不能正确返回 DOM 节点?

javascript - Casperjs: "TypeError: '未定义'不是一个函数“如果evaluate()在另一个文件中使用

javascript - nomsdb 和 gundb 有什么区别

javascript - 本地存储多 key 存储

javascript - 为什么 React 中的事件在第二个关键字中有大写字母?