PyQt WebEngine 设置 http headers
PyQt WebEngine set http headers
我想将我的应用程序从 Qt WebKit 移植到 Qt WebEngine。在 Qt Webkit 中,我可以使用 QNetworkRequest 设置 http headers,但在 Qt WebEngine 中,文档说:
Qt WebEngine has its own HTTP implementation and cannot go through a QNetworkAccessManager
我使用 PyQt5 和 Qt5.8。
我找不到如何在 Qt WebEngine 中设置 http headers。
----------------更新----------------
终于成功了!谢谢! @Trilarion:
定义我的 QWebEngineUrlRequestInterceptor class
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 在你得到一个 QWebEngineUrlRequestInfo 的 interceptRequest 方法中,它可以通过 setHttpHeader
.
设置一个 http header
通过QWebEngineView.page().profile().setRequestInterceptor设置请求拦截器。
灵感来自 。
我想将我的应用程序从 Qt WebKit 移植到 Qt WebEngine。在 Qt Webkit 中,我可以使用 QNetworkRequest 设置 http headers,但在 Qt WebEngine 中,文档说:
Qt WebEngine has its own HTTP implementation and cannot go through a QNetworkAccessManager
我使用 PyQt5 和 Qt5.8。
我找不到如何在 Qt WebEngine 中设置 http headers。
----------------更新----------------
终于成功了!谢谢! @Trilarion:
定义我的 QWebEngineUrlRequestInterceptor class
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 在你得到一个 QWebEngineUrlRequestInfo 的 interceptRequest 方法中,它可以通过 setHttpHeader
.
通过QWebEngineView.page().profile().setRequestInterceptor设置请求拦截器。
灵感来自 。