PyQt WebEngine 设置 http 标头
Posted
技术标签:
【中文标题】PyQt WebEngine 设置 http 标头【英文标题】:PyQt WebEngine set http headers 【发布时间】:2017-03-22 03:37:15 【问题描述】:我想将我的应用从 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)
【问题讨论】:
【参考方案1】:你应该实现一个QWebEngineUrlRequestInterceptor,在它的interceptRequest方法中你会得到一个QWebEngineUrlRequestInfo,它可以通过setHttpHeader
设置一个http头。
通过QWebEngineView.page().profile().setRequestInterceptor设置请求拦截器。
灵感来自How to send HTTPHeader using QT WebEngine?。
【讨论】:
以上是关于PyQt WebEngine 设置 http 标头的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QT WebEngine 发送 HTTPHeader?