如何将文本添加到 CasperJS thenOpen() POST 请求的正文
How to add text to the body of a CasperJS thenOpen() POST request
我需要在 datorama.com 中编写一个脚本来访问 pardot.com。 Pardot 确实有一个 API 需要一个请求,该请求在正文中有一个请求
POST: 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()); "Login Failed"。我使用的是正确的 email/password/user_Key,因为我是从 API 的 pardot 控制台中提取它并且它在那里工作....所以我认为问题是我没有正确设置请求的主体.
那么有人知道在请求中设置正文的方法吗?
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()
。
我需要在 datorama.com 中编写一个脚本来访问 pardot.com。 Pardot 确实有一个 API 需要一个请求,该请求在正文中有一个请求
POST: 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()); "Login Failed"。我使用的是正确的 email/password/user_Key,因为我是从 API 的 pardot 控制台中提取它并且它在那里工作....所以我认为问题是我没有正确设置请求的主体.
那么有人知道在请求中设置正文的方法吗?
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()
。