很简单的一段代码
CInternetSession is;
CHttpFile *file = (CHttpFile*)is.OpenURL(url);
IE设置了代理,而且可以正常访问internet上的网页。同一个url,在IE和Chrome里面都可以访问,但是在代码里面就不能访问,返回 12029 (无法与服务器建立连接)。试了网上的各种办法都不好使。代码里面访问内网网页就没问题,但是就是访问不了外网页面。不知道要怎么设置proxy才行?在IE中设置了代理后,代码还需要设置么? 奇怪的是,代码有一段时间是可以运行的,但是后来怎么也不行了。
CInternetSession is;
CHttpFile *file = (CHttpFile*)is.OpenURL(url);
IE设置了代理,而且可以正常访问internet上的网页。同一个url,在IE和Chrome里面都可以访问,但是在代码里面就不能访问,返回 12029 (无法与服务器建立连接)。试了网上的各种办法都不好使。代码里面访问内网网页就没问题,但是就是访问不了外网页面。不知道要怎么设置proxy才行?在IE中设置了代理后,代码还需要设置么? 奇怪的是,代码有一段时间是可以运行的,但是后来怎么也不行了。
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;
}
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;
}