zoukankan      html  css  js  c++  java
  • Windows MFC HTTP GET请求 函数流程

    Windows MFC HTTP GET请求 函数流程

      1 CString m_strHttpUrl(_T("http://10.200.80.86:8090/course/upload"))
      2 CInternetSession * pInternetSession = NULL;
      3 CHttpConnection * pHttpConnection = NULL;
      4 CHttpFile * pHttpFile = NULL;
      5 
      6 
      7 //建立连接
      8 pInternetSession = new CInternetSession(AfxGetAppName());
      9 
     10 
     11 CString strServer;
     12 CString strObject;
     13 DWORD dwServiceType;
     14 INTERNET_PORT nPort;
     15 AfxParseURL(m_strHttpUrl, dwServiceType, strServer, strObject, nPort);
     16 
     17 
     18 try
     19 {
     20     pHttpConnection = pInternetSession->GetHttpConnection(strServer, nPort);
     21 }
     22 catch (CInternetException* e)
     23 {
     24     CString strError;
     25     strError.Format(_T("GetHttpConnection Error: %u, Context: %u"), e->m_dwError, e->m_dwContext);
     26     AfxMessageBox(strError);
     27 
     28     if (NULL != pHttpConnection)
     29     {
     30         pHttpConnection->Close();
     31         delete pHttpConnection;
     32         pHttpConnection = NULL;
     33     }
     34     if (NULL != pInternetSession)
     35     {
     36         pInternetSession->Close();
     37         delete pInternetSession;
     38         pInternetSession = NULL;
     39     }
     40 
     41     return FALSE;
     42 }
     43 
     44 
     45 strParam.Format(_T("?ccvid=%s&filename=%s&filesize=%u&first=1&format=%s&md5=%s&servicetype=%s&uid=%s&time=%I64u"),
     46     m_strVideoid, m_strVideoName, m_fileLen, g_strFormat, m_strFileMD5, m_strServicetype, m_strUserid, currentTime);
     47 strParam.AppendFormat(_T("&hash=%s"), sHash.c_str());
     48 
     49 CString strTempObject = strObject + strParam;
     50 pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, strTempObject);
     51 if (NULL == pHttpFile)
     52 {
     53     AfxMessageBox(_T("OpenRequest Error."));
     54 
     55     if (NULL != pHttpFile)
     56     {
     57         pHttpFile->Close();
     58         delete pHttpFile;
     59         pHttpFile = NULL;
     60     }
     61     if (NULL != pHttpConnection)
     62     {
     63         pHttpConnection->Close();
     64         delete pHttpConnection;
     65         pHttpConnection = NULL;
     66     }
     67     if (NULL != pInternetSession)
     68     {
     69         pInternetSession->Close();
     70         delete pInternetSession;
     71         pInternetSession = NULL;
     72     }
     73 
     74     return FALSE;
     75 }
     76 
     77     
     78 pHttpFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded; charset=utf-8"));
     79 
     80 
     81 try
     82 {
     83     pHttpFile->SendRequest();
     84 }
     85 catch (CInternetException* e)
     86 {
     87     CString strError;
     88     strError.Format(_T("SendRequest Error: %u, Context: %u"), e->m_dwError, e->m_dwContext);
     89     AfxMessageBox(strError);
     90 
     91     if (NULL != pHttpFile)
     92     {
     93         pHttpFile->Close();
     94         delete pHttpFile;
     95         pHttpFile = NULL;
     96     }
     97     if (NULL != pHttpConnection)
     98     {
     99         pHttpConnection->Close();
    100         delete pHttpConnection;
    101         pHttpConnection = NULL;
    102     }
    103     if (NULL != pInternetSession)
    104     {
    105         pInternetSession->Close();
    106         delete pInternetSession;
    107         pInternetSession = NULL;
    108     }
    109 
    110     return FALSE;
    111 }
    112 
    113 
    114 char szChars[1024 + 1] = { 0 };
    115 CString strRawResponse;
    116 UINT nReaded = 0;
    117 while ((nReaded = pHttpFile->Read((void*)szChars, 1024)) > 0)
    118 {
    119     szChars[nReaded] = '';
    120     strRawResponse += szChars;
    121     memset(szChars, 0, 1024 + 1);
    122 }
    123 
    124 AfxMessageBox(strRawResponse);
    125 
    126 
    127 if (NULL != pHttpFile)
    128 {
    129     pHttpFile->Close();
    130     delete pHttpFile;
    131     pHttpFile = NULL;
    132 }
    133 if (NULL != pHttpConnection)
    134 {
    135     pHttpConnection->Close();
    136     delete pHttpConnection;
    137     pHttpConnection = NULL;
    138 }
    139 if (NULL != pInternetSession)
    140 {
    141     pInternetSession->Close();
    142     delete pInternetSession;
    143     pInternetSession = NULL;
    144 }
    145 
    146 return TRUE;
  • 相关阅读:
    Android在layout xml中使用include完成静态加载
    ImageSwitch图像切换控件
    合并石子大总结
    子矩阵(暴搜(全排列)+DP)
    回路(一笔画问题)
    道路重建(记忆化搜索+贪心)
    【NOIP2013 普及组】车站分级
    UML的基本关联
    Matlab画图-非常具体,非常全面
    面向对象程序设计与面向过程程序设计解析
  • 原文地址:https://www.cnblogs.com/diaoss/p/11583735.html
Copyright © 2011-2022 走看看