连接有密码的Http代理不成功

fietiger 2008-08-02 01:34:55

连接有密码的代理不成功,出现下面的返回信息:
HTTP/1.0 403 Forbidden
Server: squid/2.6.STABLE20
Date: Sat, 02 Aug 2008 05:12:13 GMT
Content-Type: text/html
Content-Length: 1102
Expires: Sat, 02 Aug 2008 05:12:13 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from 210.45.240.8
X-Cache-LookUp NONE from 210.45.240.8:8080
Via: 1.0 210.45.240.8:8080(squid/2.6.STABLE20)
Proxy-Connection: close

连接的函数如下:
SOCKET CHttptestDlg::ConnectProxy(LPCSTR ProxyAddr ,UINT ProxyPort,BOOL bNeedAuth, const char * lpszUserName, const char * lpszPassword)
{
CString temp;
BOOL bReturn;
char tmpBuffer[1024+1]={0};
CString DownLoadAddress="http://www.hoobe.com/upLoad/movie/";
CString hostFile="tmm.rar";

SOCKET ProxySocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (ProxySocket == INVALID_SOCKET)
{
AfxMessageBox("socket err");
return INVALID_SOCKET;
}
SocketAddr.sin_addr.s_addr = inet_addr (ProxyAddr);
SocketAddr.sin_family=AF_INET;
SocketAddr.sin_port=htons(ProxyPort);
struct fd_set fdSet;
struct timeval tmvTimeout={0L,0L};
FD_ZERO(&fdSet);
FD_SET(ProxySocket, &fdSet);
if (select(0,&fdSet,NULL,NULL,&tmvTimeout)==SOCKET_ERROR)
{
closesocket(ProxySocket);
AfxMessageBox("Error when select.");
return INVALID_SOCKET;
}

if (connect(ProxySocket, (const struct sockaddr *)&SocketAddr, sizeof(SocketAddr))==SOCKET_ERROR)
{
closesocket(ProxySocket);
AfxMessageBox("代理连接失败connect");
return INVALID_SOCKET;
}
char szAuth[1024 + 1] = { " "};
char szAuthT[1024 + 1] = { " "};
char szBuffer[1024 + 1] = { " "};

if (bNeedAuth)
{

sprintf(szAuthT, "%s:%s", lpszUserName, lpszPassword);
to64frombits((UCHAR *)szAuth, (UCHAR *)szAuthT, strlen(szAuthT));
sprintf(szBuffer, "CONNECT %s:%d HTTP/1.0\r\nProxy-Authorization: Basic %s\r\n\r\n", ProxyAddr, ProxyPort,szAuth);

}else{
sprintf(szBuffer, "CONNECT %s:%d HTTP/1.0\r\n\r\n", ProxyAddr, ProxyPort);
}
if(!SocketSend(ProxySocket,szBuffer))
{
closesocket(ProxySocket);
AfxMessageBox("代理连接失败");
return INVALID_SOCKET;
}
GetHttpHeader(ProxySocket,tmpBuffer);
temp=tmpBuffer;

if(temp.Find("HTTP/1.0 200 Connection established",0)==-1)
{
AfxMessageBox(temp);
closesocket(ProxySocket);
AfxMessageBox("代理连接失败");
return INVALID_SOCKET;
}else{
AfxMessageBox("代理连接完成");
return ProxySocket;
}
return ProxySocket;
}
请高手出手相救!
...全文
217 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fietiger 2008-08-02
  • 打赏
  • 举报
回复
介绍个嗅探器吧
fietiger 2008-08-02
  • 打赏
  • 举报
回复
呵呵,在IE中当然没有问题的
WinEggDrop 2008-08-02
  • 打赏
  • 举报
回复
放到IE中连接,看下帐号,密码是不是没问题.如果IE没问题,直接用嗅探器抓IE连接时的包,和你自己的对比下就清楚是什么回事.

18,355

社区成员

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

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