"HTTP/1.1 502 Proxy Error ( The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. )
Via: 1.1 PROXY3
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 703 "int GetFileLength(char *httpHeader)
{
CString strHeader;
int local;
strHeader=(CString)httpHeader;
local=strHeader.Find("Content-Length",0);
local+=16;
strHeader.Delete(0,local);
local=strHeader.Find("\r");
strHeader.SetAt(local,'\0'); char temp[30];
strcpy(temp,strHeader.GetBuffer(strHeader.GetLength()));
return atoi(temp);
}int GetHttpHeader(SOCKET sckDest,char *str)
{
BOOL m_bResponsed=0;
int m_nResponseHeaderSize; if(!m_bResponsed)
{
char c = 0;
int nIndex = 0;
BOOL bEndResponse = FALSE;
while(!bEndResponse && nIndex < 1024)
{
recv(sckDest,&c,1,0);
str[nIndex++] = c;
if(nIndex >= 4)
{
if(str[nIndex - 4] == '\r' && str[nIndex - 3] == '\n'
&& str[nIndex - 2] == '\r' && str[nIndex - 1] == '\n')
bEndResponse = TRUE;
}
}
m_nResponseHeaderSize = nIndex;
m_bResponsed = TRUE;
} return m_nResponseHeaderSize;}//发送
void szcopy(char* dest,const char* src,int nMaxBytes)
{
int i_cntr=0;
while ((src[i_cntr]!='\0') || (i_cntr<nMaxBytes))
dest[i_cntr]=src[i_cntr++];
dest[i_cntr]='\0';
}BOOL SocketSend(SOCKET sckDest,const char* szHttp)
{ char szSendHeader[1024];
int iLen=strlen(szHttp);
szcopy(szSendHeader,szHttp,iLen);
if(send (sckDest ,(const char FAR *)szSendHeader ,iLen ,0)==SOCKET_ERROR)
{
closesocket(sckDest);
AfxMessageBox("Error when send");
return FALSE;
} return TRUE;
}BOOL SocketSend(SOCKET sckDest,CString szHttp)
{ int iLen=szHttp.GetLength();
if(send (sckDest,szHttp,iLen,0)==SOCKET_ERROR)
{
closesocket(sckDest);
AfxMessageBox("Error when send");
return FALSE;
} return TRUE;
}SOCKET HTTPSocket; // 主socket
struct sockaddr_in SocketAddr; // address socket
struct sockaddr_in BindSocket; // for bind
CString strHost="111.111.111.111 ";
CString DownLoadAddress="http://www.aitenshi.com/bbs/images/";
CString hostFile="logo.gif";
int HttpPort=80;void CSocket_ClientDlg::OnBnClickedButton3()
{
HTTPSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SocketAddr.sin_addr.s_addr = inet_addr("128.1.0.6");
SocketAddr.sin_family=AF_INET;
SocketAddr.sin_port=htons(80); struct fd_set fdSet;
struct timeval tmvTimeout={0L,0L}; FD_ZERO(&fdSet);
FD_SET(HTTPSocket, &fdSet); if (select(0,&fdSet,NULL,NULL,&tmvTimeout)==SOCKET_ERROR)
{
closesocket(HTTPSocket);
AfxMessageBox("Error when select.");
return;
}
if (connect(HTTPSocket, (const struct sockaddr *)&SocketAddr, sizeof(SocketAddr))==SOCKET_ERROR)
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
}
// 发送CONNCET请求令到代理服务器,用于和代理建立连接 //代理服务器的地址和端口放在m_ProxyAddr,m_Port 里面 CString temp;
char tmpBuffer[1024];
memset(tmpBuffer, 0, 1024);
CString m_ProxyAddr = "www.baidu.com";
CString m_Port = "80";
temp.Format("CONNECT %s:%s HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n",m_ProxyAddr,m_Port);
if(!SocketSend(HTTPSocket,temp))
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
} // 取得代理响应,如果连接代理成功,代理服务器将返回200 Connection established GetHttpHeader(HTTPSocket,tmpBuffer);
temp=tmpBuffer;
if(temp.Find("HTTP/1.0 200 Connection established",0)==-1)
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
} int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理完成"));
return; // ----------〉}
最后GetHttpHeader(HTTPSocket,tmpBuffer);
后,提示连接失败,因为收到上面描述的结果,请问如何来解决呢?谢谢。
Via: 1.1 PROXY3
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 703 "int GetFileLength(char *httpHeader)
{
CString strHeader;
int local;
strHeader=(CString)httpHeader;
local=strHeader.Find("Content-Length",0);
local+=16;
strHeader.Delete(0,local);
local=strHeader.Find("\r");
strHeader.SetAt(local,'\0'); char temp[30];
strcpy(temp,strHeader.GetBuffer(strHeader.GetLength()));
return atoi(temp);
}int GetHttpHeader(SOCKET sckDest,char *str)
{
BOOL m_bResponsed=0;
int m_nResponseHeaderSize; if(!m_bResponsed)
{
char c = 0;
int nIndex = 0;
BOOL bEndResponse = FALSE;
while(!bEndResponse && nIndex < 1024)
{
recv(sckDest,&c,1,0);
str[nIndex++] = c;
if(nIndex >= 4)
{
if(str[nIndex - 4] == '\r' && str[nIndex - 3] == '\n'
&& str[nIndex - 2] == '\r' && str[nIndex - 1] == '\n')
bEndResponse = TRUE;
}
}
m_nResponseHeaderSize = nIndex;
m_bResponsed = TRUE;
} return m_nResponseHeaderSize;}//发送
void szcopy(char* dest,const char* src,int nMaxBytes)
{
int i_cntr=0;
while ((src[i_cntr]!='\0') || (i_cntr<nMaxBytes))
dest[i_cntr]=src[i_cntr++];
dest[i_cntr]='\0';
}BOOL SocketSend(SOCKET sckDest,const char* szHttp)
{ char szSendHeader[1024];
int iLen=strlen(szHttp);
szcopy(szSendHeader,szHttp,iLen);
if(send (sckDest ,(const char FAR *)szSendHeader ,iLen ,0)==SOCKET_ERROR)
{
closesocket(sckDest);
AfxMessageBox("Error when send");
return FALSE;
} return TRUE;
}BOOL SocketSend(SOCKET sckDest,CString szHttp)
{ int iLen=szHttp.GetLength();
if(send (sckDest,szHttp,iLen,0)==SOCKET_ERROR)
{
closesocket(sckDest);
AfxMessageBox("Error when send");
return FALSE;
} return TRUE;
}SOCKET HTTPSocket; // 主socket
struct sockaddr_in SocketAddr; // address socket
struct sockaddr_in BindSocket; // for bind
CString strHost="111.111.111.111 ";
CString DownLoadAddress="http://www.aitenshi.com/bbs/images/";
CString hostFile="logo.gif";
int HttpPort=80;void CSocket_ClientDlg::OnBnClickedButton3()
{
HTTPSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SocketAddr.sin_addr.s_addr = inet_addr("128.1.0.6");
SocketAddr.sin_family=AF_INET;
SocketAddr.sin_port=htons(80); struct fd_set fdSet;
struct timeval tmvTimeout={0L,0L}; FD_ZERO(&fdSet);
FD_SET(HTTPSocket, &fdSet); if (select(0,&fdSet,NULL,NULL,&tmvTimeout)==SOCKET_ERROR)
{
closesocket(HTTPSocket);
AfxMessageBox("Error when select.");
return;
}
if (connect(HTTPSocket, (const struct sockaddr *)&SocketAddr, sizeof(SocketAddr))==SOCKET_ERROR)
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
}
// 发送CONNCET请求令到代理服务器,用于和代理建立连接 //代理服务器的地址和端口放在m_ProxyAddr,m_Port 里面 CString temp;
char tmpBuffer[1024];
memset(tmpBuffer, 0, 1024);
CString m_ProxyAddr = "www.baidu.com";
CString m_Port = "80";
temp.Format("CONNECT %s:%s HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n",m_ProxyAddr,m_Port);
if(!SocketSend(HTTPSocket,temp))
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
} // 取得代理响应,如果连接代理成功,代理服务器将返回200 Connection established GetHttpHeader(HTTPSocket,tmpBuffer);
temp=tmpBuffer;
if(temp.Find("HTTP/1.0 200 Connection established",0)==-1)
{
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理失败"));
return;
} int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, _T("连接代理完成"));
return; // ----------〉}
最后GetHttpHeader(HTTPSocket,tmpBuffer);
后,提示连接失败,因为收到上面描述的结果,请问如何来解决呢?谢谢。
出现HTTP/1.1 407 Proxy Authentication Required
请问这个地方,是需要自己写代码来进行验证么?有没有封装好的东西可以来用呢?谢谢