使用QNetworkAccessManag的Qt HTTP身份验证

2024-06-02 05:10:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个需要有效用户名/密码的web服务。在PyQt中,我使用QNetworkAccessManager访问webservice,它发出

authenticationRequired (QNetworkReply*, QAuthenticator*)

当(显然)需要身份验证时发出信号。当我填写的用户和psswd QAuthenticator,一切正常。但是,我看不出当用户有效时如何打破循环。在

从需要验证的文档中:

如果拒绝凭据,此信号将再次发出

对于无效凭证,此信号会反复发出,然后 再一次。。。查看回复中的错误代码显示0。该如何中断或处理此循环,以便它以错误终止?在


Tags: 用户文档身份验证web密码信号servicepyqt
3条回答

是啊,很奇怪。我之前所做的是检查我是否已经用这些细节进行了身份验证,然后我是否已经调用QNetworkReply.abort()

调用QNetworkReply::abort()将导致请求失败,错误为“Operation Aborted”,而不是原来的401错误。现在正确的做法似乎是不要在authenticationRequired()槽内调用QAuthenticator::setUser()或{}。这将使QAuthenticatorPrivate::phase保留为Done,这将导致请求以正确的错误代码干净地终止。在

Qt文档在这一点上相当不清楚。在

这似乎不是qt4.7中的行为,而是在qt4.8中引入的。在

试一下怎么样:

QNetworkReply::abort()

或者

^{pr2}$

是吗?在

相关问题 更多 >