0

qnetworkaccessmanager用于提出HTTP请求。我连接的服务器的主机名 ( FQDN ) 有两个IP addressesDNS我需要控制使用哪一个。显而易见的解决方案 ( change the URL's hostname to IP address) 不起作用,因为在 location 字段中server发送回302 redirect带有原始内容的 a。hostname如果我遵循redirectQT似乎会随机选择它连接到的IP 。

有没有办法告诉在关卡上qnetworkaccessmanager使用给定的并使用来自的?如果没有,任何解决方法建议表示赞赏。IP addressTCP connect()Host headerURL

编辑:使用 QT 4.7.4

4

2 回答 2

1

这似乎可行,并且是一个简单的解决方法:将 QNetworkRequest 的 URL 设置为在主机部分中包含要连接的所需 IP 地址,但也使用 setCustomHeader("Host", "<server hostname>") 来避免重定向。在我的测试中,QT 将始终使用 URL 中设置的 IP。

于 2013-05-30T08:10:40.910 回答
0

您应该能够构建自定义QNetworkRequest并指定在QNetworkRequest::LocationHeader重定向的情况下强制使用特定的目标 URL。如果您查看QNetworkAccessManager::sendCustomRequest( QNetworkAccessManager::sendCustomRequest doc)QNetworkRequest::Attribute::RedirectionTargetQNetworkRequest::KnownHeaders应该会给您一些提示。

(脚注:我正在使用harmattan文档,因为截至回答时正确的Qt文档已关闭)

于 2013-05-29T11:37:33.040 回答