我需要在 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/