Visual c++ poco httpclientsession给主机找不到错误,即使主机解析

Visual c++ poco httpclientsession给主机找不到错误,即使主机解析,visual-c++,poco-libraries,Visual C++,Poco Libraries,我对poco有一个奇怪的问题。我可以很好地构建它,并将其链接到测试应用程序。然而,当我下载一个url时,无论我使用什么url,它都会报告一个HostNotFound异常。该文件可在任何地方的匿名浏览器中访问,并可在dns中解析。。。。我对解决这个问题有些不知所措。。。有什么想法吗 //计算机上的dns显示错误 nslookup s3.amazonaws.com 服务器:未知 地址:192.168.0.1 非权威性回答: 名称:s3-1.amazonaws.com 地址:72.21.215.196

我对poco有一个奇怪的问题。我可以很好地构建它,并将其链接到测试应用程序。然而,当我下载一个url时,无论我使用什么url,它都会报告一个HostNotFound异常。该文件可在任何地方的匿名浏览器中访问,并可在dns中解析。。。。我对解决这个问题有些不知所措。。。有什么想法吗

//计算机上的dns显示错误 nslookup s3.amazonaws.com 服务器:未知 地址:192.168.0.1

非权威性回答: 名称:s3-1.amazonaws.com 地址:72.21.215.196 别名:s3.amazonaws.com s3.a-geo.amazonaws.com

    // calling helper
CString host("http://s3.amazonaws.com");
CString path("/mybucket.mycompany.com/myfile.txt");
CString errmsg;
CString data = GetURL(host,path,errmsg);

    // poco helper code
 CString  GetURL(CString host, CString path_query, CString &debmsg)
{

    debmsg = CString("");
    try 
    {
        // convert request
        std::string tmphost((LPCTSTR)host);
        std::string tmppath((LPCTSTR)path_query);
        // creation session and request
        HTTPClientSession session(tmphost,80);
        // disable proxy
        session.setProxyHost("");
        HTTPRequest req(HTTPRequest::HTTP_GET,tmppath,HTTPMessage::HTTP_1_1);

        // send request
        session.sendRequest(req);
        // get response
        HTTPResponse res;

        std::istream * response = &session.receiveResponse(res);

        // convert it back to mfc string
        streambuf *pbuf = response->rdbuf();
        std::ostringstream ss;
        ss << pbuf;

        CString data(ss.str().c_str());

        return data;
    }
    catch (Poco::Exception& ex)
    {
        CString err(ex.displayText().c_str());
        debmsg.Format("error getting url: %s%s err: %s",host,path_query,err);
    }

    return CString("<error>");

}
//正在调用帮助程序
CString主机(“http://s3.amazonaws.com");
CString路径(“/mybucket.mycompany.com/myfile.txt”);
CString-errmsg;
CString data=GetURL(主机、路径、errmsg);
//poco辅助代码
CString GetURL(CString主机、CString路径查询、CString&debmsg)
{
debmsg=CString(“”);
尝试
{
//转换请求
std::字符串tmphost((LPCTSTR)主机);
std::字符串tmppath((LPCTSTR)路径_查询);
//创建会话和请求
HTTPClientSession(tmphost,80);
//禁用代理
session.setProxyHost(“”);
HTTPRequest-req(HTTPRequest::HTTP_-GET、tmppath、HTTPMessage::HTTP_-1_-1);
//发送请求
发送请求(req);
//得到回应
HTTPResponse;
std::istream*response=&session.receiverresponse(res);
//将其转换回mfc字符串
streambuf*pbuf=response->rdbuf();
std::ostringstream ss;

ss重建了poco网络库,仍然得到了相同的错误

为了避免在这么简单的事情上浪费时间,只需切换到使用CHttpConnection(这也节省了大约20MB的库需求)


也许有经验的poco开发人员会想出一个更好的主意。

重建的poco网络库仍然会遇到同样的错误

为了避免在这么简单的事情上浪费时间,只需切换到使用CHttpConnection(这也节省了大约20MB的库需求)


也许有经验的poco开发人员会想出一个更好的主意。

刚刚遇到了一个类似的问题。请注意,您的主机名是
”http://s3.amazonaws.com“

主机的实际名称是
“s3.amazonaws.com”
“http://”
部分指定了协议。类
HTTPClientSession
无论如何只能用于http协议

在我的例子中,去掉
“http://”
,只使用实际的主机名是正确的:
“s3.amazonaws.com”


(好吧,在我的例子中是
)http://ws.audioscrobbler.com“
,但这不是重点)。要知道这是否真的是您的问题的答案,可能太晚了,错误看起来确实与我的有点不同,但希望它可以帮助通过搜索到达这里的人,就像我一样。

刚刚遇到了类似的问题。请注意,您的主机名是
”http://s3.amazonaws.com“

主机的实际名称是
“s3.amazonaws.com”
“http://”
部分指定了协议。类
HTTPClientSession
无论如何只能用于http协议

在我的例子中,去掉
“http://”
,只使用实际的主机名是正确的:
“s3.amazonaws.com”


(好吧,在我的例子中是
)http://ws.audioscrobbler.com“
,但这不是重点)。要知道这是否真的是您的问题的答案,可能太晚了,错误看起来确实与我的有点不同,但希望它可以帮助通过搜索到达这里的人,就像我一样。

我有这个问题。远程端口未打开。如果我的情况是HTTP 80未打开,我认为我正在打开HTTPS 443,但我的应用程序中有一个错误阳离子逻辑将其指向80。我遇到了这个问题。远程端口未打开。如果我的情况是,HTTP 80未打开,我认为我正在打开HTTPS 443,但我的应用程序逻辑中的一个错误将其指向80。
HTTPClientSession session("s3.amazonaws.com");