我用CInternetSession,CHttpConnection,CHttpFile类实现通过http代理访问internet,但是总是第一次失败,后来都成功,我想可能我代码有写的不对的地方,请指点一下,谢谢!
代码如下,有不明的地方,请指出:
//设置代理
//参数分别为:代理服务器地址,端口号,用户名,密码
//用到的变量说明:
//sess为CInternetSession变量
//pConnect为CHttpConnection变量
//pFile 为CHttpFile变量
int TMTNHTTPProtocol::SetProxy(char* proxyAddr, char* proxyPort, char* proxyUser, char* proxyPassword)
{
char tmp[1024];
INTERNET_PROXY_INFO proxyinfo; try
{
memset(tmp, 0, 1024);
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
strcat(tmp , proxyAddr);
strcat(tmp , ":");
strcat(tmp , proxyPort);
proxyinfo.lpszProxy = tmp;
proxyinfo.lpszProxyBypass = NULL; if (! sess.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO)))
{
return 0;
}
pConnect = sess.GetHttpConnection("mtn.eucp.b2m.cn", INTERNET_FLAG_NO_AUTO_REDIRECT, 80);
pFile = pConnect->OpenRequest(CHttpConnection::HTTP_VERB_POST, pUrl); if (!pFile->SetOption(INTERNET_OPTION_PROXY_USERNAME, proxyUser, strlen(proxyUser) + 1))
{
return 0;
} if (!pFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD, proxyPassword, strlen(proxyPassword) + 1))
{
return 0;
} return 1;
}
catch(...)
{
return 0;
}}
代码如下,有不明的地方,请指出:
//设置代理
//参数分别为:代理服务器地址,端口号,用户名,密码
//用到的变量说明:
//sess为CInternetSession变量
//pConnect为CHttpConnection变量
//pFile 为CHttpFile变量
int TMTNHTTPProtocol::SetProxy(char* proxyAddr, char* proxyPort, char* proxyUser, char* proxyPassword)
{
char tmp[1024];
INTERNET_PROXY_INFO proxyinfo; try
{
memset(tmp, 0, 1024);
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
strcat(tmp , proxyAddr);
strcat(tmp , ":");
strcat(tmp , proxyPort);
proxyinfo.lpszProxy = tmp;
proxyinfo.lpszProxyBypass = NULL; if (! sess.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO)))
{
return 0;
}
pConnect = sess.GetHttpConnection("mtn.eucp.b2m.cn", INTERNET_FLAG_NO_AUTO_REDIRECT, 80);
pFile = pConnect->OpenRequest(CHttpConnection::HTTP_VERB_POST, pUrl); if (!pFile->SetOption(INTERNET_OPTION_PROXY_USERNAME, proxyUser, strlen(proxyUser) + 1))
{
return 0;
} if (!pFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD, proxyPassword, strlen(proxyPassword) + 1))
{
return 0;
} return 1;
}
catch(...)
{
return 0;
}}
解决方案 »
- HTTP协议奇怪现象,求大神解释
- GDI+防闪烁
- 加几个图标啥就这么困难呢? 各位都是如何给工具栏上的按钮加图标的??
- 值得一看的问题
- 关于hook ws2_32.dll 的问题?有这方面研究的人来看看啊
- *********** 第一次亲密接触 --- 压缩 !***********
- 请教 OLEDB的编译问题,急急急!!!
- 如何快速学习VC++?
- 请问哪有关于mfc打印的教程我学习学习?
- 如何实时地获得微软语音识别引擎识别过程中提取的语音特征参数
- 调试时如何快速查看集合数组中各个元素的值?
- 就问一个小问题:核心编程的那个HOOKAPI,是否还可以适应WIN2000 SP4 版本以上的操作系统?
但是之后再执行没有错误,能够通过proxy访问internet。
不知怎么回事?请高手指教!!
我的QQ:33640362,信息请注明:vc