使用PhantomJS 2.1.1我想验证用户并获取受保护数据列表;到目前为止,我没有成功采用这种方法。这里的任何人都可以看看并指出我正确的方向。谢谢。 我想要做的是从后端获取JSON并在此处使用Phantom进行测试,作为构建过程的一部分。
use strict
var AUTH_ENDPOINT = 'http://192.168.1.251';
var SERV_ENDPOINT = 'http://192.168.1.250';
var returnedData = '';
var page = require('webpage').create(),
server = AUTH_ENDPOINT + '/services/users/login',
settings = {
operation: "POST",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({'user':'myusername', 'pword':'123456789'})
};
page.onResourceRequested = function(requestData, networkRequest) {
console.log('Request (#' + requestData.id + '): ');
console.log(JSON.stringify(requestData));
};
page.onResourceReceived = function(response) {
console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
};
page.onLoadFinished = function(status) {
console.log('Status: ' + status);
// Do other things here...
};
page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.open(server, settings, function(status) {
console.log('Status: ' + status);
// when successful the response from server is a JSON
// like so '{"authtoken":"23423","user":"myname"}'
returnedData = JSON.parse(page.plainText);
// this should be my token
console.log(returnedData.authtoken);
});
// now use this token on this url
var server = SERV_ENDPOINT + '/services/get/list?data=cars';
var settings = {
operation: "GET",
encoding: "utf8",
headers: {
"token": returnedData.authtoken
}
};
page.open(server, settings, function(status) {
console.log(status);
if (status !== 'success') {
console.log('Unable to get!');
} else {
var jsonSource = page.plainText;
var resultObject = JSON.parse(jsonSource);
// all of the user cars here!!
console.log(resultObject);
}
// then finally close
phantom.exit();
});
所以这就是我所拥有的,它不起作用,输出就在这里
Request #1:
{"headers":
[
{
"name":"Accept",
"value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
},
{
"name":"Origin",
"value":"null"
},
{
"name":"User-Agent",
"value":"Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
},
{
"name":"Content-Type",
"value":"application/json"
},
{
"name":"Content-Length",
"value":"54"
}
],
"id":1,
"method":"POST",
"postData":"{\"user\":\"myusername\",\"pword\":\"123456789\"}",
"time":"2016-02-10T18:32:36.007Z",
"url":"http://192.168.1.251/services/users/login"}
Unable to load resource (#1URL:http://192.168.1.251/services/users/login)
Error code: 5. Description: Operation canceled
Response (#1, stage "end"): {"contentType":null,"headers":[],"id":1,"redirectURL":null,"stage":"end","status":null,"statusText":null,"time":"2016-02-10T18:32:36.008Z","url":"http://192.168.1.251/services/users/login"}
答案 0 :(得分:-1)
一个错误可能是" page.plainTex"而不是" page.plainText"这使代码适合我。