pyqt5.6 interceptRequest不起作用

时间:2016-06-06 13:28:25

标签: qt interceptor pyqt5 qwebpage

我想通过子类QWebEngineUrlRequestInterceptor拦截对另一个的url请求:

class RequestInterceptor(QWebEngineUrlRequestInterceptor): 
    def interceptRequest(self,info): 
        print('#################interceptRequest')
        print(info.requestUrl(),info.firstPartyUrl(),info.NavigationType,info.resourceType(),info.requestMethod())
        if info.requestUrl().endswith("/jquery.js"):
           info.redirect('/jqueryTest.js')



app = QApplication([]) 
p = QWebEnginePage() 
v = QWebEngineView() 
v.setPage(p) 
p.profile().setRequestInterceptor(RequestInterceptor())
c.registerObject('bridge', p)
url = "http://127.0.0.1:8000/test.html?t=5"
v.setUrl(QUrl(url)) 
v.show() 
app.exec_()

当我运行代码时,拦截器不起作用!
希望有人给我帮助,谢谢!

PS: 可能它是由python垃圾收集引起的。所以我通过修改代码

将拦截器存储在varible中
p.profile().setRequestInterceptor(RequestInterceptor())

interceptor = RequestInterceptor()
p.profile().setRequestInterceptor(interceptor )

这就是全部。

1 个答案:

答案 0 :(得分:1)

可能是由python垃圾收集引起的。所以我通过修改代码将拦截器存储在varible中

p.profile().setRequestInterceptor(RequestInterceptor())

interceptor = RequestInterceptor()
p.profile().setRequestInterceptor(interceptor )

这就是全部。