質問

私は、有効なユーザ名/パスワードが必要なWebサービスで働いています。 PyQtはから、私は

発するQNetworkAccessManagerを使用してWebサービスにアクセスしています
authenticationRequired (QNetworkReply*, QAuthenticator*)
認証が必要である(明らかに)、

信号。私は、ユーザーとpsswdのために記入した場合 QAuthenticatorは、すべてが正常に動作します。しかし、私は、ユーザーが有効なのないのときにループを分割する方法を見ることができません。

authenticationRequiredのためのドキュメントから:

「それは資格証明書を拒否した場合、この信号は再び放出されます。」

無効な資格情報のために、この信号は再び放射され、そして再びされ、そして 再び...応答でエラーコードを見てみると、このループは、それはエラーで終了するように壊れたり取り扱われることになっている方法は?

0を示しました。
役に立ちましたか?

解決

Yeh氏は、それは奇妙です。私が以前にやったことは、私はすでに、これらの詳細を認証してきたかどうかを確認し、私はその後、

QNetworkReply.abort()をコールしている場合であります

他のヒント

何をしようとしておよそます:

QNetworkReply::abort()

または

QNetworkReply::close()

QNetworkReply::abort()を呼び出すと、エラー「操作中断」の代わりに、元の401エラーで失敗する要求が発生します。今やるべき正しい事はあなたのQAuthenticator::setUser()スロット内QAuthenticator::setPassword()またはauthenticationRequired()を呼び出すことがないように思われます。これは、要求が正しいエラーコードをきれいに終了しますQAuthenticatorPrivate::phaseとしてDoneを残すだろう。

Qtのドキュメントは、この時点でかなり明確ではない。

これはQtの4.7での動作もしていないようでした、とQt 4.8でいくつかの時点で導入されました。

もしQAuthenticatorメソッドを呼び出さずに&QNetworkAccessManager接続スロット:: proxyAuthenticationRequiredから復帰した場合、

、要求は、実際のHTTPコード(例えば、401又は407)で中断されます。

たとえば、あなたはQAuthenticator :: SETUSERとするsetPasswordを呼び出す際に、ユーザーclics OK、彼がキャンセルclicsたときに何を呼び出すことはできません。それがすべてです: - )

このもQNetworkAccessManager ::あなたはQNetworkReplyは::)(中止呼び出す必要はありませんauthenticationRequiredは(、あなたは、単に中止を呼び出すのに対し、あまりにもHTTPコードを保存した、まったくQAuthenticatorメソッドを呼び出すことはできません(&に接続されているスロットにも当てはまります))それを変えるます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top