又是OpenUrl的问题,请老司机赐教哦,快被整疯了。。。

JerKii 2018-04-27 07:33:32
很简单的一段代码


CInternetSession is;
CHttpFile *file = (CHttpFile*)is.OpenURL(url);


IE设置了代理,而且可以正常访问internet上的网页。同一个url,在IE和Chrome里面都可以访问,但是在代码里面就不能访问,返回 12029 (无法与服务器建立连接)。试了网上的各种办法都不好使。

代码里面访问内网网页就没问题,但是就是访问不了外网页面。

不知道要怎么设置proxy才行?在IE中设置了代理后,代码还需要设置么?

奇怪的是,代码有一段时间是可以运行的,但是后来怎么也不行了。
...全文
1385 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-04-28
  • 打赏
  • 举报
回复
仅帮#1整理格式:
CString GeHttptFile(const char *url ,char * Proxy,char *UseName, char * Password) {
    CString szContent;
    char strProxyList[MAX_PATH], strUsername[64], strPassword[64];
    //in this case "proxya " is the proxy server name, "8080 " is its port
    strcpy(strProxyList,Proxy);
    strcpy(strUsername,UseName);
    strcpy(strPassword,Password);
    DWORD dwServiceType = AFX_INET_SERVICE_HTTP;
    CString szServer, szObject;
    INTERNET_PORT nPort;
    AfxParseURL(url, dwServiceType, szServer, szObject, nPort);
    CInternetSession mysession;
    CHttpConnection* pConnection;
    CHttpFile* pHttpFile;
    pConnection = mysession.GetHttpConnection(szServer,
                  INTERNET_FLAG_KEEP_CONNECTION,
                  INTERNET_INVALID_PORT_NUMBER,
                  NULL, NULL);
    pHttpFile = pConnection-> OpenRequest( "POST", szObject,
                                           NULL, 0, NULL, NULL,
                                           INTERNET_FLAG_KEEP_CONNECTION);
    //here for proxy
    INTERNET_PROXY_INFO proxyinfo;
    proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
    proxyinfo.lpszProxy = strProxyList;
    proxyinfo.lpszProxyBypass = NULL;
    mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO));
    pHttpFile-> SetOption(INTERNET_OPTION_PROXY_USERNAME, strUsername, strlen(strUsername)+1);
    pHttpFile-> SetOption(INTERNET_OPTION_PROXY_PASSWORD, strPassword, strlen(strPassword)+1);

    pHttpFile-> SendRequest(NULL);
    DWORD nFileSize = pHttpFile-> GetLength();
    LPSTR rbuf = szContent.GetBuffer(nFileSize);
    UINT uBytesRead = pHttpFile-> Read(rbuf, nFileSize);
    szContent.ReleaseBuffer();
    pHttpFile-> Close();
    delete pHttpFile;
    pConnection-> Close();
    delete pConnection;
    mysession.Close();
    return szContent;
}

oyljerry 2018-04-28
  • 打赏
  • 举报
回复

CString  GeHttptFile(const char  *url ,char * Proxy,char *UseName, char * Password)      
{      
    CString       szContent;      
    char       strProxyList[MAX_PATH],       strUsername[64],       strPassword[64];      
    //in       this       case       "proxya "       is       the       proxy       server       name,       "8080 "       is       its       port      
    strcpy(strProxyList,Proxy);      
    strcpy(strUsername,UseName);      
    strcpy(strPassword,Password);      
    DWORD       dwServiceType       =       AFX_INET_SERVICE_HTTP;      
    CString       szServer,       szObject;      
    INTERNET_PORT       nPort;      
    AfxParseURL(url,       dwServiceType,       szServer,       szObject,       nPort);      
    CInternetSession       mysession;      
    CHttpConnection*       pConnection;      
    CHttpFile*       pHttpFile;      
    pConnection       =       mysession.GetHttpConnection(szServer,      
    INTERNET_FLAG_KEEP_CONNECTION,      
    INTERNET_INVALID_PORT_NUMBER,      
    NULL,       NULL);      
    pHttpFile       =       pConnection-> OpenRequest( "POST",       szObject,      
        NULL,       0,       NULL,       NULL,      
        INTERNET_FLAG_KEEP_CONNECTION);      
    //here       for       proxy      
    INTERNET_PROXY_INFO       proxyinfo;      
    proxyinfo.dwAccessType       =       INTERNET_OPEN_TYPE_PROXY;      
    proxyinfo.lpszProxy       =       strProxyList;      
    proxyinfo.lpszProxyBypass       =       NULL;      
    mysession.SetOption(INTERNET_OPTION_PROXY,       (LPVOID)&proxyinfo,       sizeof(INTERNET_PROXY_INFO));      
    pHttpFile-> SetOption(INTERNET_OPTION_PROXY_USERNAME,       strUsername,       strlen(strUsername)+1);      
    pHttpFile-> SetOption(INTERNET_OPTION_PROXY_PASSWORD,       strPassword,       strlen(strPassword)+1);      
        
    pHttpFile-> SendRequest(NULL);      
    DWORD       nFileSize       =       pHttpFile-> GetLength();      
    LPSTR       rbuf       =       szContent.GetBuffer(nFileSize);      
    UINT       uBytesRead       =       pHttpFile-> Read(rbuf,       nFileSize);      
    szContent.ReleaseBuffer();      
    pHttpFile-> Close();      
    delete       pHttpFile;      
    pConnection-> Close();      
    delete       pConnection;      
    mysession.Close();      
    return       szContent;      
} 

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧