InternetOpen函数怎么用?

mjs2000 2004-12-29 04:40:01
我想使用代理服务器,而且,代理服务器需要设置username and password
怎么调用这个函数来实现功能呢?
...全文
2625 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoldenWater 2005-05-28
  • 打赏
  • 举报
回复
if(!m_strProxyUserName.IsEmpty())
{
CString strIn = m_strProxyUserName + _T(":") + m_strProxyUserPwd;
CString strOut = EncodeTextBase64(strIn);
CString strAuthor = _T("Proxy-Authorization: Basic ") + strOut + _T("\r\n");

BOOL bRet = HttpAddRequestHeaders(hRequest,strAuthor,-1,HTTP_ADDREQ_FLAG_ADD );
//BOOL bRet = TRUE;
if(!bRet)
{
// add username and pwd error
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return FALSE;
}
}
注意一定是-1
HunterForPig 2004-12-29
  • 打赏
  • 举报
回复
是不是构造一个header发给代理服务器?
你是用基于什么协议的代理服务器
如果是sock5
struct authreq
{
char Ver;
char Ulen;
char Name[255];
char PLen;
char Pass[255];
};
如果sock5
服务器段要求认证就要发送上面这东东过去
kingzai 2004-12-29
  • 打赏
  • 举报
回复
you should use InternetSetOption() to set proxy information.
INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[1];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = "http://myproxy:8080";

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
printf("InternetQueryOption failed! (%d)\n", GetLastError());

Once again, the above sample will change the default (or LAN) settings (List.pszConnection == NULL). In the sample, the "static" proxy server information is changed to "http://myproxy" at port 8080. Similarly you can also change the auto configuration URL:



INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[2];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[0].Value.pszValue = "http://myserver/get_proxy_info.dll";
Option[1].dwOption = INTERNET_PER_CONN_FLAGS;
Option[1].Value.dwValue = PROXY_TYPE_AUTO_PROXY_URL;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 2;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
printf("InternetQueryOption failed! (%d)\n", GetLastError());

HOWTO: Programmatically Query and Set Proxy Settings Under Internet Explorer

Q226473

mjs2000 2004-12-29
  • 打赏
  • 举报
回复
请具体讲解
是不是构造一个header发给代理服务器?
HunterForPig 2004-12-29
  • 打赏
  • 举报
回复
HINTERNET InternetOpen(
LPCTSTR lpszAgent,
DWORD dwAccessType,
LPCTSTR lpszProxyName,
LPCTSTR lpszProxyBypass,
DWORD dwFlags
);
这个函数每这个功能
如果要send 代理服务器的用户名和密码
就根据代理协议,自己send 过去
mjs2000 2004-12-29
  • 打赏
  • 举报
回复
代理服务器的用户名和密码在哪里设定呢?
bobob 2004-12-29
  • 打赏
  • 举报
回复
找到一点相关的例子,自己看吧
INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[1];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = "http://myproxy:8080";

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
printf("InternetQueryOption failed! (%d)\n", GetLastError());
//more detail:
HOWTO: Programmatically Query and Set Proxy Settings Under Internet Explorer

Q226473
mjs2000 2004-12-29
  • 打赏
  • 举报
回复
自己upup

18,356

社区成员

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

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