문제

유효한 사용자 이름/비밀번호가 필요한 웹 서비스로 작업하고 있습니다. pyqt에서 나는 qnetworkaccessmanager를 사용하여 웹 서비스에 액세스하고 있습니다.

authenticationRequired (QNetworkReply*, QAuthenticator*)

신호 (명백히) 인증이 필요한 경우. Qauthenticator의 사용자와 PSSWD를 작성하면 모든 것이 잘 작동합니다. 그러나 사용자가 ~ 아니다 유효한.

AuthenticationRequired의 문서에서 :

"자격 증명을 거부하면이 신호가 다시 방출됩니다."

유효하지 않은 자격 증명의 경우이 신호는 다시 반복됩니다. 그리고 다시 ... 답장의 오류 코드를 보면 0이 나타났습니다.

도움이 되었습니까?

해결책

예, 이상 해요. 이전에 한 일은 이미 해당 세부 사항을 인증했는지 확인하고 전화했는지 확인하는 것입니다. 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 :: proxyauthenticationCesticationRequired에 연결된 슬롯에서 돌아 오면 실제 HTTP 코드 (예 : 401 또는 407)로 요청이 중단됩니다.

예를 들어, 사용자가 클릭을 클릭하고 클릭이 취소 될 때 아무것도 전화하지 않으면 Qauthenticator :: SetUser 및 SetPassword를 호출 할 수 있습니다. 그게 다야 :-)

이것은 & qnetworkaccessmanager :: AuthenticationRequired에 연결된 슬롯에도 해당됩니다 (qnetworkreply :: abort ()를 전혀 호출 할 수있는 경우 qauthenticator 메소드를 전혀 호출 할 수 있습니다. ).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top