zoukankan      html  css  js  c++  java
  • 【转】Poco 1.4.2 HTTPClientSession/HTTPRequest 使用使用代理(proxy)需要注意的一点

    不使用代理的时候,以下代码能正常工作。

    // no error handling ...  
    string strURI = "http://www.baidu.com/query?r=xxx";  
    Poco::URI uri(strURI);  
      
    Poco::Net::HTTPClientSession session;  
    session.setHost(uri.getHost());  
    session.setPort(uri.getPort());  
      
    // Proxy switch:  
    //  session.setProxy(<proxyHost>, <proxyPort>);  
      
    Poco::Net::HTTPRequest req("HTTP/1.1");  
    req.setURI(strURI);    
      
    session.sendRequest(req);  

    蛋是如果启用Proxy(取消掉对上面setProxy那句代码的注释),则上面的代码会报错。

    抓包发现它发出去的HTTP请求成了:

     

    GET http://www.baidu.com:80http://www.baidu.com/query?r=xxx  


    跟到Poco源代码中,发现原因为:

    // in poco/net/HTTPClientSession.cpp  
    //  
     if (!_proxyHost.empty())  
    {  
         request.setURI(proxyRequestPrefix() + <strong>request.getURI()</strong>);  
         proxyAuthenticate(request);  
    }  

    解决的方法,

    1) 修改 poco/net/HTTPClientSession.cpp

    request.setURI(proxyRequestPrefix() + Poco:URI(request.getURI()).getPathEtc());  


    或者,2)

    使用的时候,给HTTPRequest传入URI的时候不包含schema, host, port

    如下:

    // no error handling ...  
    string strURI = "http://www.baidu.com/query?r=xxx";  
    Poco::URI uri(strURI);  
    Poco::Net::HTTPClientSession session;  
    session.setHost(uri.getHost());  
    session.setPort(uri.getPort());  
    // Proxy switch: on  
    session.setProxy(<proxyHost>, <proxyPort>);  
    Poco::Net::HTTPRequest req("HTTP/1.1");  
    req.setURI(<strong>uri.getPathEtc()</strong>);    
    session.sendRequest(req);
  • 相关阅读:
    jQuery插件开发之定宽输出
    全国所有省市县地理坐标Json格式
    diff/merge configuration in TFS
    How to accelerate your VPC 2007
    TechNet Magazine/TechNet杂志
    net helpmsg get error message for error id in cmd script
    devenv.exe /DebugExe debug unitcase
    ZoomIt for demo
    diskpart to deal with driver letter changed after reboot in Virtual Machine
    几个关于web开发资源的站点
  • 原文地址:https://www.cnblogs.com/wms2017/p/6945363.html
Copyright © 2011-2022 走看看