Hóa ra có một vài cách để có được chi tiết thêm về thất bại:
Thực hiện onResourceRequested
và onResourceReceived
callbacks trên trang:
page.onResourceRequested = function (resource) {
log('resource requested: ' + resource.url);
}
page.onResourceReceived = function (resource) {
log('resource received: ' + resource.status + ' ' + resource.statusText + ' ' +
resource.contentType + ' ' + resource.url);
}
Nếu bạn đang tìm kiếm chi tiết hơn vẫn còn, bạn cần phải vá PhantomJS internals. Cập nhật đối tượng CustomPage của nó (trong WebPage.cpp) để triển khai ErrorExtension của QTWebKit. Đây là mã bạn có thể thêm nào đó:
protected:
bool supportsExtension(Extension extension) const {
if (extension == QWebPage::ErrorPageExtension)
{
return true;
}
return false;
}
bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0)
{
if (extension != QWebPage::ErrorPageExtension)
return false;
ErrorPageExtensionOption *errorOption = (ErrorPageExtensionOption*) option;
std::cerr << "Error loading " << qPrintable(errorOption->url.toString()) << std::endl;
if(errorOption->domain == QWebPage::QtNetwork)
std::cerr << "Network error (" << errorOption->error << "): ";
else if(errorOption->domain == QWebPage::Http)
std::cerr << "HTTP error (" << errorOption->error << "): ";
else if(errorOption->domain == QWebPage::WebKit)
std::cerr << "WebKit error (" << errorOption->error << "): ";
std::cerr << qPrintable(errorOption->errorString) << std::endl;
return false;
}
này sẽ cung cấp cho bạn hầu hết các thông tin lỗi, nhưng bạn vẫn có thể nhận onLoadFinished(success=false)
sự kiện mà không nhận được chi tiết hơn. Từ nghiên cứu của tôi, nguyên nhân chính của số này là đã hủy các yêu cầu tải. QTWebKit gửi thông báo không thành công để hủy, nhưng không báo cáo bất kỳ chi tiết nào.
Nguồn
2011-09-09 15:56:20
Cũng xem [Cách kiểm tra mã trạng thái HTTP] [1] [1]: http://stackoverflow.com/questions/4330274/qtwebkit-how-to-check-http-status-code –