我需要在datorama.com中编写一个脚本来访问pardot.com。 Pardot确实有一个API,需要一个请求在正文中有一个请求
POST:https://pi.pardot.com/api/login/version/3
邮件正文:电子邮件=&密码=& 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,因为我正在从API控制台提取pardot并且它正在那里工作....所以我认为问题是我没有正确设置请求的正文。
那么有人知道在请求中设置正文的方法吗?
答案 0 :(得分:1)
casper.open()
或casper.thenOpen()
无法理解content
设置。您可能想要使用data
:
casper.start()
.thenOpen('https://pi.pardot.com/api/login/version/3', {
method: 'post',
data: 'email=<myemail>&password=<password>&user_key=<userKey>'
}, function() { ... });
如果您自己构建字符串,请不要忘记在电子邮件,密码和用户密钥参数上使用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()
。