Resulta que hay un par de maneras de obtener más detalles acerca de los errores:
implementar el onResourceRequested
y onResourceReceived
devoluciones de llamada en la página:
page.onResourceRequested = function (resource) {
log('resource requested: ' + resource.url);
}
page.onResourceReceived = function (resource) {
log('resource received: ' + resource.status + ' ' + resource.statusText + ' ' +
resource.contentType + ' ' + resource.url);
}
Si usted está buscando para obtener más detalles Aún así, necesita parchear las partes internas de PhantomJS. Actualice su objeto CustomPage (en WebPage.cpp) para implementar ErrorExtension de QTWebKit. Aquí es código que puede agregar que hace que:
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;
}
esto le dará la mayor parte de la información de error, pero todavía se puede conseguir onLoadFinished(success=false)
eventos sin alcanzar más detalle. De mi investigación, la causa principal de ésos es solicitudes de carga canceladas. QTWebKit envía una notificación de falla para cancelaciones, pero no informa ningún detalle.
Véase también [Cómo comprobar código de estado HTTP] [1] [1]: http://stackoverflow.com/questions/4330274/qtwebkit-how-to-check-http-status-code –