2013-05-29 102 views
0

我使用qnetworkaccessmanager來製作HTTP請求。我連接的服務器的主機名(FQDN)在DNS有兩個IP addresses,我需要控制使用哪一個。顯而易見的解決方案(change the URL's hostname to IP address)不起作用,因爲server在位置字段中發送了帶有原始hostname302 redirect。如果我按照redirect,QT似乎隨機選擇它連接到哪個IPQNetworkAccessManager和DNS解析

有沒有辦法告訴qnetworkaccessmanagerURL使用上TCPconnect()水平給定IP address和使用Host header?如果沒有,任何解決方法建議表示讚賞。

編輯:使用Qt 4.7.4

回答

1

這似乎工作,並且是一個簡單的解決方法:設置QNetworkRequest的URL以包含要連接到主機部分的所需IP地址,還可以使用setCustomHeader(「主機」,「<服務器主機名稱>」)以避免重定向。在我的測試中,QT會一直使用URL中的IP設置。

0

您應該能夠建立一個自定義QNetworkRequest並指定QNetworkRequest::LocationHeader強制特定的目標網址重定向的情況。如果你看一下QNetworkAccessManager::sendCustomRequestQNetworkAccessManager::sendCustomRequest doc),並且QNetworkRequest::Attribute::RedirectionTargetQNetworkRequest::KnownHeaders它應該給你一些提示吧

(註腳:我使用的是哈麥丹文檔作爲正確的Qt文檔被辭去的答案的時間)

+0

感謝您的建議,b它不會做我想要的。 sendCustomRequest()是爲通常的GET,POST,PUT和DELETE以外的HTTP動詞而設計的。此外,位置標題和重定向目標僅與響應相關。我需要修改請求,以便我可以控制將發送到哪個IP並獲得非302響應。 – tpatja

+0

我正要寫一個迴應,並且看到你已經解決了它。 –