Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phantomjs 如何从page.open发出的请求中查看HTTP状态代码?_Phantomjs - Fatal编程技术网

Phantomjs 如何从page.open发出的请求中查看HTTP状态代码?

Phantomjs 如何从page.open发出的请求中查看HTTP状态代码?,phantomjs,Phantomjs,我有一个包含以下内容的phantomJS脚本: page.open(url, function (status) { if (status === "fail") { /* handle failure */ } }); 状态检查有时有效,但即使请求返回500,状态仍将为“成功”。如何获取实际请求状态代码?您可以这样做: var page=require('webpage')。create(), 系统=要求(“系统”), 资源=[]; 第页打开('http://google.com,功

我有一个包含以下内容的phantomJS脚本:

page.open(url, function (status) {
    if (status === "fail") { /* handle failure */ }
});

状态检查有时有效,但即使请求返回500,状态仍将为“成功”。如何获取实际请求状态代码?

您可以这样做:

var page=require('webpage')。create(),
系统=要求(“系统”),
资源=[];
第页打开('http://google.com,功能(状态){
console.log('加载了http状态:',资源[0]。状态);
phantom.exit();
});
page.onResourceReceived=函数(响应){
//检查资源是否已下载完毕
如果(response.stage!=“end”)返回;
//如果需要,请应用资源筛选器:
if(response.headers.filter)(函数(header){
if(header.name=='Content Type'&&header.value.indexOf('text/html')==0){
返回true;
}
返回false;
})(长度>0)
资源。推送(响应);
};
因此,如果您需要检查第一个浏览器请求的状态(在本例中是google的html页面),您应该将其视为
resources[0]中返回的第一个请求。status
。在onResourceReceived处理程序中,您可以为尝试从中获取http代码的资源添加更多筛选器

更新:由于,在中添加了对已完成答复的检查

page.property('onResourceError', function(res) {
资源变量未定义

即使我把它设定为

var page = require('webpage').create(),
system = require('system'),
resources = [];

高超的技术。您可能希望使用的另一个条件是检查阶段<代码>如果(response.stage!=“end”)返回将退出该函数。这将防止重复处理,因为每次下载都有“开始”和“结束”事件。@fotijr没错!非常感谢。我现在就更新这个片段,谢谢你的回复!这显然是违反规定的,但这是一个伟大而准确的答案