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] = ‘\0‘;
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;

原文地址:https://www.cnblogs.com/diaoss/p/11583735.html

时间: 2024-10-06 11:45:05

Windows MFC HTTP GET请求 函数流程的相关文章

Windows MFC HTTP POST请求 函数流程

Windows MFC HTTP POST请求 函数流程 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 //建立连接 9 pInterne

Windows MFC HTTP 函数流程

Windows MFC HTTP 函数流程 1 //建立连接 2 pInternetSession = new CInternetSession(AfxGetAppName()); 3 4 5 6 //根据HttpUr解析 7 CString strServer; 8 CString strObject; 9 DWORD dwServiceType; 10 INTERNET_PORT nPort; 11 AfxParseURL(m_strHttpUrl, dwServiceType, strSe

windows/mfc面试题一套

不知道答案是否正确..日后再完善.. 一.C/C++基础 选择与填空 1.      VC++6.0环境下,假定a 为一个整型(int)数组名,则元素a[8]的地址为:C A.     a+4  B.a+8  C.a+16  D.a+32 2. 定义 "int a=3, b=4, c=5;" , 则"c <= (a + b) && b != c" 的值是(   )1 3. char* name = "Victor Hugo"

nginx的请求接收流程(二)

在ngx_http_process_request_line函数中,解析完请求行之后,如果请求行的uri里面包含了域名部分,则将其保持在请求结构的headers_in成员的server字段,headers_in用来保存所有请求头,它的类型为ngx_http_headers_in_t: [cpp] view plaincopy <span style="font-size: 18px; ">typedef struct { ngx_list_t                

MFC 程序入口和执行流程

一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用程序的窗口函数.而在MFC程序当中我们不在能找到类似WinMain这样的程序入口,取而代之的是一系列派生类的声明和定义以及一个冲CWinApp类派生而来的类的全局对象.CWinApp类被称之为应用程序对象,在一个MFC程序当中只允许有一个应用程序对象.由于CWinApp的派生对象是全局的,因此这个对

Windows MFC 全局模态 实现 (二)

上一篇 Windows MFC 全局模态 实现 介绍了一下第一种方法,但是这个方法有个问题是,即使在对话框外不能点击,框外点击鼠标,当前需要操作的窗口也是失去了焦点的.这样用户体验影响比较严重.而且还有个问题是,如果要适配32位.64位系统,要达到全局模态(禁止鼠标效果)需要32.64位两种库,而且要分别被32.64位系统调用.使用条件限制比较严格. 所以这里记录一下使用透明窗口的实现方法: 1.工程中插入一个对话框 2.设置对话框属性 去掉Title bar的勾 3.增加一个OnInitDia

Liberty nova-api HTTP请求执行流程

本博客欢迎转载,但请注明出处 http://blog.csdn.net/ringoshen/article/details/51387038 由于能力与时间有限,文章内容难免错漏,望大家多加指正,相互进步! 0. 前言 这次看了一下nova list命令的执行过程,整个过程可以分为几步:HTTP请求.URLMap分发.过滤.APIRouter到具体执行函数,接下来使用Postman组个包并发送http请求作为开始对各个模块进行跟踪和注解. 1. HTTP请求 OpenStack组件都是通过RES

Zend framework处理一个http请求的流程

Zend framework处理一个http请求的流程 1, 首先是bootstrap过程,初始化程序里用到的资源 2, 创建一个Zend_Controller_Front实体,实现front controller模式,这个实体类会负责将http请求派遣到恰当的controller的action里. 3, Front controller会创建俩个对象来封装http请求和http回复,分别是Zend_Controller_Request_Http和Zend_Controller_Response

【转载】MFC 程序入口和执行流程

原文链接: http://www.cnblogs.com/liuweilinlin/archive/2012/08/16/2643272.html 一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用程序的窗口函数.而在MFC程序当中我们不在能找到类似WinMain这样的程序入口,取而代之的是一系列派生类的声明和定义以及一个冲CWinApp类派生而来