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 pInternetSession = new CInternetSession(AfxGetAppName());
 10
 11
 12 CString strServer;
 13 CString strObject;
 14 DWORD dwServiceType;
 15 INTERNET_PORT nPort;
 16 AfxParseURL(m_strHttpUrl, dwServiceType, strServer, strObject, nPort);
 17
 18
 19 try
 20 {
 21     pHttpConnection = pInternetSession->GetHttpConnection(strServer, nPort);
 22 }
 23 catch (CInternetException* e)
 24 {
 25     CString strError;
 26     strError.Format(_T("GetHttpConnection Error: %u, Context: %u"), e->m_dwError, e->m_dwContext);
 27     AfxMessageBox(strError);
 28
 29     if (NULL != pHttpConnection)
 30     {
 31         pHttpConnection->Close();
 32         delete pHttpConnection;
 33         pHttpConnection = NULL;
 34     }
 35     if (NULL != pInternetSession)
 36     {
 37         pInternetSession->Close();
 38         delete pInternetSession;
 39         pInternetSession = NULL;
 40     }
 41
 42     return FALSE;
 43 }
 44
 45
 46 strParam.Format(_T("?ccvid=%s&format=%s&time=%I64u"),
 47     m_strVideoid, g_strFormat, currentTime);
 48 strParam.AppendFormat(_T("&hash=%s"), sHash.c_str());
 49
 50 CString strTempObject = strObject + strParam;
 51 pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, strTempObject);
 52 if (NULL == pHttpFile)
 53 {
 54     AfxMessageBox(_T("OpenRequest Error."));
 55
 56     if (NULL != pHttpFile)
 57     {
 58         pHttpFile->Close();
 59         delete pHttpFile;
 60         pHttpFile = NULL;
 61     }
 62     if (NULL != pHttpConnection)
 63     {
 64         pHttpConnection->Close();
 65         delete pHttpConnection;
 66         pHttpConnection = NULL;
 67     }
 68     if (NULL != pInternetSession)
 69     {
 70         pInternetSession->Close();
 71         delete pInternetSession;
 72         pInternetSession = NULL;
 73     }
 74
 75     return FALSE;
 76 }
 77
 78
 79 pHttpFile->AddRequestHeaders(_T("Accept: *,*/*"));
 80 pHttpFile->AddRequestHeaders(_T("Accept-Language: zh-cn"));
 81 pHttpFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded; charset=utf-8"));
 82 //pHttpFile->AddRequestHeaders(_T("Content-Type: application/json; charset=utf-8"));
 83 pHttpFile->AddRequestHeaders(_T("Accept-Encoding: gzip, deflate"));
 84 strContentRange.Format(, m_startLen, m_endLen - 1, fileLen);
 85 pHttpFile->AddRequestHeaders(_T("Content-Range: bytes %x-%y/%z"));
 86
 87
 88 CString strReq;
 89 strReq.Format(_T("courseFullName=%s&courseName=%s&grade=%s&lesson=%s&liveRoomId=%s&section=%s&teacherName=%s&type=%s&recordingTime=%s-%s-%s"),
 90     strVideoName, strTopic, strGrade, strNum, strLiveRoom, strStage, strTeacher, strSubject, strYear, strMonth, strDay);
 91 strStart.Format(_T("--%s\r\nContent-Disposition: form-data;name=\"file%s\";filename=\"%s\"\r\nContent-Type: application/octet-stream\r\n\r\n"),
 92     strBOUNDARY, m_strVideoName, m_strVideoName);
 93 strEnd.Format(_T("\r\n--%s--\r\n"),
 94 try
 95 {
 96     pHttpFile->SendRequest(NULL, 0, strReq.GetBuffer(), strReq.GetLength());    //len注意
 97 }
 98 catch (CInternetException* e)
 99 {
100     CString strError;
101     strError.Format(_T("SendRequest Error: %u, Context: %u"), e->m_dwError, e->m_dwContext);
102     AfxMessageBox(strError);
103
104     if (NULL != pHttpFile)
105     {
106         pHttpFile->Close();
107         delete pHttpFile;
108         pHttpFile = NULL;
109     }
110     if (NULL != pHttpConnection)
111     {
112         pHttpConnection->Close();
113         delete pHttpConnection;
114         pHttpConnection = NULL;
115     }
116     if (NULL != pInternetSession)
117     {
118         pInternetSession->Close();
119         delete pInternetSession;
120         pInternetSession = NULL;
121     }
122
123     return FALSE;
124 }
125
126
127 char szChars[1024 + 1] = { 0 };
128 CString strRawResponse;
129 UINT nReaded = 0;
130 while ((nReaded = pHttpFile->Read((void*)szChars, 1024)) > 0)
131 {
132     szChars[nReaded] = ‘\0‘;
133     strRawResponse += szChars;
134     memset(szChars, 0, 1024 + 1);
135 }
136
137 AfxMessageBox(strRawResponse);
138
139
140 if (NULL != pHttpFile)
141 {
142     pHttpFile->Close();
143     delete pHttpFile;
144     pHttpFile = NULL;
145 }
146 if (NULL != pHttpConnection)
147 {
148     pHttpConnection->Close();
149     delete pHttpConnection;
150     pHttpConnection = NULL;
151 }
152 if (NULL != pInternetSession)
153 {
154     pInternetSession->Close();
155     delete pInternetSession;
156     pInternetSession = NULL;
157 }
158
159
160 return TRUE;

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

时间: 2024-10-09 20:47:26

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

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 pInternetSe

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类派生而来