2015-11-05 172 views
2

我想從我的GET請求中刪除'授權:'標頭。 QT默認添加它。如何從QT中的http請求中刪除授權標頭

樣品的請求發射 -

GET https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP/1.1


授權:基本噩==

的User-Agent:Mozilla的/ 5.0(Linux)的MYAPP/1.2 .1

連接:保持活動

接受編碼:gzip,緊縮

接受語言:EN-US,*


示例代碼 -

QNetworkAccessManager* mgr = new QNetworkAccessManager(); 
QNetworkRequest req; 
req.setUrl(QUrl("sampleURL")); 
mgr->get(req); 

結果應該是如下(沒有授權頭) -

GET https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP/1.1


的User-Agent:Mozilla的/ 5.0(Linux)的MYAPP/1.2.1

連接:保持活動

接受編碼:gzip,緊縮

接受語言:EN-US ,*


像setHeader,setRawHeader這樣的API可用,但是沒有辦法完全刪除標頭。

回答

0

QT似乎通過信號/插槽系統自動處理認證,與標題分開,所以你不必考慮它。

您是否正在處理來自NetworkManager的authenticationRequired(QNetworkReply *回覆,QAuthenticator * authenticator)信號。如果它對認證請求給出誤報,你可以通過重置信號中的認證器來解決這個問題。對不起,這不是一個確定的答案,但讓我知道它是否有效!

無論何時最終服務器在傳送請求的內容之前請求認證 ,都會發出此信號。連接到此 信號的插槽應該填充驗證器 對象中的內容憑證(可能是通過檢查回覆對象確定的 )。

QNetworkAccessManager將在內部緩存憑證,如果服務器需要再次驗證, 將發送相同的值, 而不發送authenticationRequired()信號。如果它拒絕 憑證,該信號將再次發出。

注意:不可能使用QueuedConnection連接到此 信號,因爲如果在信號返回時驗證器未用 填充新信息,則連接將失敗。

另請參閱proxyAuthenticationRequired()。