如何从Qt QWebEngineView获取HTTP状态代码
How To Get HTTP Status Codes From Qt QWebEngineView?
我一直在查看QT文档,以找到在加载页面并发出请求后从QWebEngineView返回http状态代码的方法。我知道QWebEngineView不与QNetWorkAccessManager交互,这将使实现这一点变得轻而易举。那么,有没有其他方法可以使用QWebEngineView从请求中获取HTTP状态代码??我尝试了多种方法,包括RequestInterceptor。下面是我尝试使用RequestInterceptor的一个片段,但它并没有给我实际的HTTP状态代码,只是常数值,这是我不想要的。
/*************requestinterceptor.h**************/
#ifndef REQUESTINTERCEPTOR_H
#define REQUESTINTERCEPTOR_H
#include <QWebEngineUrlRequestInterceptor>
#include <QWebEngineUrlRequestInfo>
#include <QDebug>
#include <QUrl>
class RequestInterceptor : public QWebEngineUrlRequestInterceptor
{
public:
explicit RequestInterceptor(QObject * parent = Q_NULLPTR);
virtual void interceptRequest(QWebEngineUrlRequestInfo & info) Q_DECL_OVERRIDE;
};
#endif // REQUESTINTERCEPTOR_H
/*************requestinterceptor.cpp***************/
#include "requestinterceptor.h"
RequestInterceptor::RequestInterceptor(QObject * parent)
:QWebEngineUrlRequestInterceptor(parent){}
void RequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo & info)
{
QString rsrct = "";
switch(info.resourceType())
{
case 1:rsrct="ResourceTypeSubFrame, --> frame or iframe";break;
case 2:rsrct="ResourceTypeStylesheet, --> a CSS stylesheet";break;
case 3:rsrct="ResourceTypeScript, --> an external script";break;
case 4:rsrct="ResourceTypeImage, --> an image (jpg/gif/png/etc)";break;
case 5:rsrct="ResourceTypeFontResource, --> a font";break;
case 6:rsrct="ResourceTypeSubResource, --> an other subresource.";break;
case 7:rsrct="ResourceTypeObject, --> an object (or embed) tag for a plugin,";break;
case 8:rsrct="ResourceTypeMedia, --> a media resource.";break;
case 9:rsrct="ResourceTypeWorker, --> the main resource of a dedicated worker.";break;
case 10:rsrct="ResourceTypeSharedWorker, --> the main resource of a shared worker.";break;
case 11:rsrct="ResourceTypePrefetch, --> an explicitly requested prefetch";break;
case 12:rsrct="ResourceTypeFavicon, --> a favicon";break;
case 13:rsrct="ResourceTypeXhr, --> a XMLHttpRequest";break;
case 14:rsrct="ResourceTypePing, --> a ping request for <a ping>";break;
case 15:rsrct="ResourceTypeServiceWorker, --> the main resource of a service worker.";break;
case 16:rsrct="ResourceTypeUnknown";break;
default : rsrct="Unknown type";break;
}
qDebug()<<"t"<<Q_FUNC_INFO<<":ntt" <<
"WebUrlRequestInterceptor::interceptRequest " <<info.requestMethod()
<<"rn "<<info.requestUrl()<<" "<<rsrct <<"rn";
}
/*************mainwindow.cpp***************/
const QUrl url("http://google.com");
view = new WebView();
view = new QWebEngineView();
interceptor = new RequestInterceptor(view);
profile = new QWebEngineProfile(view);
profile->setRequestInterceptor(interceptor);
page = new QWebEnginePage(profile,view);
view->setPage(page);
经过数小时的搜索,我发现目前无法通过QWebEngine获取HTTP状态代码。加载完成事件不返回任何状态代码以及
然后我找到了的解决方案
setting = webpage.settings()
setting.setAttribute(QWebEngineSettings.ErrorPageEnabled, False)
相关文章:
- 如何在boost beast http请求中设置http头
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 在多个核心中处理一个HTTP请求
- SFML library: http request
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- std::future_error:无关联状态
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 如何从Qt QWebEngineView获取HTTP状态代码
- 为什么这C++ASIO,当执行HTTP / SSL请求时,BEAST服务器会进入错误状态
- HTTP响应标头是否可以不以状态行开头
- HTTP状态代码到HRESULT的映射