PyQt WebEngine set http headers



我想将我的应用程序从Qt WebKit移植到Qt WebEngine。在Qt Webkit中,我可以使用QNetworkRequest设置http标头,但是在Qt WebEngine中,文档说:

Qt WebEngine有自己的HTTP实现,不能通过QNetworkAccessManager。

我使用 PyQt5 和 Qt5.8。

我找不到如何在Qt WebEngine中设置http标头。

--------------更新----------------

终于,它奏效了!谢谢!@Trilarion:

定义我的 QWebEngineUrlRequestInterceptor 类

class NWUrlRequestInterceptor(QWebEngineUrlRequestInterceptor):
def __init__(self, headers):
super(QWebEngineUrlRequestInterceptor, self).__init__()
self.headers = headers
def set_headers(self,headers):
self.headers = headers
def interceptRequest(self, info):
print info, self.headers
for header, value in self.headers:
info.setHttpHeader(header, value);

在我的浏览器中使用:

self.request_interceptor = NWUrlRequestInterceptor(self.headers)
self.webpage.profile().setRequestInterceptor(self.request_interceptor)

你应该实现一个 QWebEngineUrlRequestInterceptor 在你的 interceptRequest 方法中,你会得到一个 QWebEngineUrlRequestInfo 它可以通过setHttpHeader设置 http 标头。

通过 QWebEngineView.page().profile().setRequestInterceptor 设置请求拦截器。

灵感来自如何使用QT WebEngine发送HTTPHeader?。

最新更新