本帖最后由 VisualEleven 于 2011-04-07 15:31:45 编辑

解决方案 »

  1.   

    vc连接代理服务器:VC++实现http代理
      

  2.   

    上面的代码连接Http代理服务器没有问题,但是如果Hppt代理服务器有用户名,密码验证是同样连不上,没有解决我提出的问题
      

  3.   

    CString uw=User;
    uw+=_T(":");
    uw+=Pass;
    CString p;
    Base64Encode((LPCSTR)uw,p); //base64加密
    uw = p;
    sprintf(conbuf, "CONNECT %s:%u HTTP/1.1\r\nHost:%s:%d\r\nProxy-Connection: Keep-Alive\r\nProxy-Authorization: Basic %s\r\n\r\n",addr, port, addr, port, uw );
    int num = CSocket::Send(conbuf, strlen(conbuf));
    if(num == 0)
    {
    TRACE("Send Authority negotiate command error!\n");
    return FALSE;
    }
    memset(conbuf, 0, BUFF_SIZE);
    num = CSocket::Receive(conbuf, BUFF_SIZE, 0); //第一行为状态行 HTTPVersion SP Status-Code SP Reason-Phrase CRLF
    CString line;
    if (!AfxExtractSubString(line,conbuf,0)){
    OnConnect( WSAENOTCONN );
    return FALSE;
    }
    CString StatusCode ;
    if (!AfxExtractSubString(StatusCode,line,1,' ')){
    OnConnect( WSAENOTCONN );
    return FALSE;
    }
    if (stricmp(StatusCode,_T("200"))){    //不通过
    OnConnect( WSAENOTCONN );
    return FALSE;
    }重新组下请求包试试看,格式为
    CONNECT 111.1.17.100:7778 HTTP/1.0
    Host: 111.1.17.100:7778
    Proxy-Connection: Keep-Alive
    Proxy-Authorization: Basic dXNlcjpwd2Q=  //加密后的用户名和密码
    空行
    空行