我正在与这需要一个有效的用户名/密码,一个web服务的工作。从PyQt的,我访问使用QNetworkAccessManager发射的

的web服务
authenticationRequired (QNetworkReply*, QAuthenticator*)

当(明显),需要信号验证。当我填写用户和psswd为 QAuthenticator,一切工作正常。然而,我不能看到如何当用户中断环路的的有效。

从文档为authenticationRequired:

“如果它拒绝该凭证,该信号将被再次发射。”

有关无效凭证此信号再次发射,并且再次,与 再次...在答复中的错误代码,寻找显示0。这环路应该是怎样被打破或处理,使其以一个错误终止?

有帮助吗?

解决方案

叶,它是奇数。什么我以前做的是检查,如果我已经与那些细节验证,如果我再调用QNetworkReply.abort()

其他提示

关于尝试什么:

QNetworkReply::abort()

QNetworkReply::close()

调用QNetworkReply::abort()将导致请求失败并返回错误“操作已中止”而不是原来的401错误。现在要做的正确的事似乎不叫QAuthenticator::setUser()QAuthenticator::setPassword()authenticationRequired()槽内。这将使QAuthenticatorPrivate::phaseDone这将导致请求与正确的错误代码干净地终止。

Qt文档是在这一点上非常不清楚。

这似乎并没有在Qt的4.7的行为,并且在某些时候在Qt的4.8中引入的。

如果你从连接到&QNetworkAccessManager :: proxyAuthenticationRequired而不调用任何QAuthenticator方法的槽返回,该请求将被与实际HTTP代码(例如401或407)中止。

例如,您可以拨打QAuthenticator :: SETUSER和setPassword当用户CLICS OK,并呼吁没事的时候,他CLICS取消。这就是: - )

这也是真实的槽连接到&QNetworkAccessManager :: authenticationRequired(其中你不必调用QNetworkReply ::中止(),则可以简单地调用没有QAuthenticator方法在所有的,其保持HTTP代码,反之,主叫中止( )改变它)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top