访问需要用户名和密码的HTTP服务器,用OpenURL怎么实现?

解决方案 »

  1.   

    BOOL AFXAPI AfxParseURLEx( 
    LPCTSTR pstrURL, 
    DWORD& dwServiceType, 
    CString& strServer, 
    CString& strObject, 
    INTERNET_PORT& nPort, 
    CString& strUsername, 
    CString& strPassword, 
    DWORD dwFlags = 0 );This global function is the extended version of AfxParseURL and is used in CInternetSession::OpenURL.
      

  2.   

    DWORD dwRet, dwLen;
    char szTemp[500];
    dwLen = sizeof(szTemp);
    //查询 服务器 请求信息~~
    ::HttpQueryInfo(hURL,HTTP_QUERY_STATUS_CODE,szTemp,&dwLen,NULL);
    dwRet = (DWORD) atoi(szTemp);
    dwLen = sizeof(szTemp);

    m_dwRet = dwRet;
    // 需要链接重定向该页面  呵呵~~那就 获得转向的路径~~嘻嘻~~ 
    if(dwRet == HTTP_STATUS_MOVED || dwRet == HTTP_STATUS_REDIRECT ||dwRet == HTTP_STATUS_REDIRECT_METHOD){                  
    hDlg->ChangeListView(nItem,8,"文件重定向");
    hDlg->AddStrList(nItem,"<--文件重定向");
    // 获得新的地址 Yep...get the new base location
    CString strNewLocation;
    ::HttpQueryInfo(hURL,HTTP_QUERY_LOCATION,NULL,&dwLen,0);
    ::HttpQueryInfo(hURL,HTTP_QUERY_LOCATION,
    strNewLocation.GetBufferSetLength(dwLen),&dwLen,0);
    strNewLocation.ReleaseBuffer(dwLen);
    // 确信新地址包含服务器名
    CString strNewServer;
    AfxParseURLEx(strNewLocation,dwServiceType,strNewServer,strObject,nPort,
    strUser,strPassword,ICU_NO_ENCODE); ::InternetCloseHandle(hURL);
    ::InternetCloseHandle(hConnect);
      

  3.   

    HINTERNET     hHttpConnection;
    DWORD_PTR dwContext = NULL;
    if (m_sUserName.GetLength())
    hHttpConnection = ::InternetConnect(m_hInternetSession, m_sServer, m_nPort, m_sUserName, m_sPassword, m_dwServiceType, 0, (DWORD) dwContext);