我使用qnetworkaccessmanager来发出HTTP请求。我连接到的服务器的主机名(FQDN)在DNS中有两个IP addresses,我需要控制使用哪一个。显而易见的解决方案(change the URL's hostname to IP address)不起作用,因为server在location字段中发送一个带有原始hostname的302 redirect。如果我遵循redirect,QT似乎会随机选择它连接到哪个IP。
有没有办法告诉qnetworkaccessmanager在TCP connect()级别上使用给定的IP address,并从URL中使用Host header?如果没有,任何解决办法的建议都会受到赞赏。
编辑:使用QT4.7.4
发布于 2013-05-30 08:10:40
这似乎可行,而且是一个简单的解决方法:将QNetworkRequest的URL设置为包含要连接到的主机部分中所需的IP地址,但也可以使用setCustomHeader(“主机”,"")来避免重定向。在我的测试中,QT将始终使用URL中的IP集。
发布于 2013-05-29 11:37:33
您应该能够构建一个自定义的QNetworkRequest,并指定QNetworkRequest::LocationHeader,以便在重定向的情况下强制特定的目标URL。如果您查看QNetworkAccessManager::sendCustomRequest (QNetworkAccessManager::sendCustomRequest文档),以及QNetworkRequest::Attribute::RedirectionTarget和QNetworkRequest::KnownHeaders ),它应该会给您一些提示。
(脚注:我正在使用harmattan文档,因为适当的Qt文档在回答的时候已经减少了)
https://stackoverflow.com/questions/16811882
复制相似问题