【发布时间】:2011-04-05 07:56:41
【问题描述】:
我正在使用 ATL 服务器 CAtlHttpCLient 向服务器发送 HTTP 请求。
基本上我的代码是这样的:
ATL::CAtlHttpClient client;
ATL::CAtlNavigateData navigateData;
navigateData.SetSocketTimeout(60000);
navigateData.SetMethod(ATL_HTTP_METHOD_POST);
BX_TString jmfmime = "application/vnd.cip4-jmf+xml";
navigateData.SetPostData((BYTE*) msg.c_str(), msg.length(), jmfmime.c_str());
client.Navigate("http://[fe80::21a:a0ff:fec1:5917%6]:8090/someextrastuff", &navigateData);
当我使用 IP4 地址连接时,一切正常。但是,导航功能似乎不适用于 IP6 地址。
在内部,'[' 和 ']' 字符不被视为 URL 中的有效字符,并且 URL 被转换为类似 http://%5bfe80::21a:a0ff:fec1:5917%6%5d:8090/someextrastuff 的内容。因此无法解析 URL。
我知道 CAtlHttpClient 应该同时支持 IP4 和 IP6 地址。所以看来我错过了一些东西。
我应该以不同的方式指定 IP6 地址吗?
或者我不允许在导航功能中指定 IP 地址,我应该始终使用主机名并希望客户端始终能够解析主机名吗?
【问题讨论】: