CAtlHttpClient -导航到IP6地址似乎不工作

CAtlHttpClient - Navigate to an IP6 address seems not to work

本文关键字:工作 地址 IP6 导航 CAtlHttpClient      更新时间:2023-10-16

我使用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地址,我应该始终使用主机名并希望客户端始终能够解析主机名吗?

在我的ATL版本中(包含在Visual Studio 2005中),URL是用CUrl helper类解析的;这个类似乎不支持IPv6地址。也许在最近的版本中修复了这个问题?如果没有,您可以手动构建一个CUrl对象并将其传递给重载的Navigate()方法。