【转】让 cocos2d-x 的 CCHttpRequest 支持https
肖锐(Cooki)个人原创,欢迎转载,转载请注明地址,肖锐(Cooki)的技术博客 http://blog.csdn.net/xiao0026
HttpClient.cpp
- int processGetTask(CCHttpRequest *request, write_callback callback, void *stream, int *responseCode)
- {
- CURLcode code = CURL_LAST;
- CURL *curl = curl_easy_init();
- do {
- if (!configureCURL(curl))
- {
- break;
- }
- /* handle custom header data */
- /* create curl linked list */
- struct curl_slist *cHeaders=NULL;
- /* get custom header data (if set) */
- std::vector<std::string> headers=request->getHeaders();
- if(!headers.empty())
- {
- for(std::vector<std::string>::iterator it=headers.begin();it!=headers.end();it++)
- {
- /* append custom headers one by one */
- cHeaders=curl_slist_append(cHeaders,it->c_str());
- }
- /* set custom headers for curl */
- code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, cHeaders);
- if (code != CURLE_OK) {
- break;
- }
- }
- code = curl_easy_setopt(curl, CURLOPT_URL, request->getUrl());
- if (code != CURLE_OK)
- {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, request->getUrl());
- if (code != CURLE_OK)
- {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
- if (code != CURLE_OK)
- {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
- if (code != CURLE_OK)
- {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_perform(curl);
- if (code != CURLE_OK)
- {
- break;
- }
- /* free the linked list for header data */
- curl_slist_free_all(cHeaders);
- code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, responseCode);
- if (code != CURLE_OK || *responseCode != 200)
- {
- code = CURLE_HTTP_RETURNED_ERROR;
- }
- } while (0);
- if (curl) {
- curl_easy_cleanup(curl);
- }
- return (code == CURLE_OK ? 0 : 1);
- }
- //Process POST Request
- int processPostTask(CCHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode)
- {
- CURLcode code = CURL_LAST;
- CURL *curl = curl_easy_init();
- do {
- if (!configureCURL(curl)) {
- break;
- }
- /* handle custom header data */
- /* create curl linked list */
- struct curl_slist *cHeaders=NULL;
- /* get custom header data (if set) */
- std::vector<std::string> headers=request->getHeaders();
- if(!headers.empty())
- {
- for(std::vector<std::string>::iterator it=headers.begin();it!=headers.end();it++)
- {
- /* append custom headers one by one */
- cHeaders=curl_slist_append(cHeaders,it->c_str());
- }
- /* set custom headers for curl */
- code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, cHeaders);
- if (code != CURLE_OK) {
- break;
- }
- }
- code = curl_easy_setopt(curl, CURLOPT_URL, request->getUrl());
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_POST, 1);
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request->getRequestData());
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, request->getRequestDataSize());
- if (code != CURLE_OK) {
- break;
- }
- code = curl_easy_perform(curl);
- if (code != CURLE_OK) {
- break;
- }
- /* free the linked list for header data */
- curl_slist_free_all(cHeaders);
- code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, responseCode);
- if (code != CURLE_OK || *responseCode != 200) {
- code = CURLE_HTTP_RETURNED_ERROR;
- }
- } while (0);
- if (curl) {
- curl_easy_cleanup(curl);
- }
- return (code == CURLE_OK ? 0 : 1);
- }
- code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
- if (code != CURLE_OK) {
- break;
- }
- 加入这一段curl代码, 即可支持解析https解析,不管是get还是post都可
【转】让 cocos2d-x 的 CCHttpRequest 支持https的更多相关文章
- node如何让一个端口同时支持https与http
众所周知node是一个高性能的web服务器,使用它可以很简单的创建一个http或https的服务器. 比如一个很简单的http服务器: var http = require('http'); var ...
- 如何让你的网站支持https
如何让你的网站支持https 当今世界的主流网站基本都是使用https对外界提供服务,甚至有某些公司建议完全使用https, 那么https是什么呢?请参考如下的图解,https是在我们通常说的tcp ...
- 让你的网站免费支持 HTTPS 及 Nginx 平滑升级
为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...
- 在iOS APP中使用H5显示百度地图时如何支持HTTPS?
现象: 公司正在开发一个iOSAPP,使用h5显示百度地图,但是发现同样的H5页面,在安卓可以显示出来,在iOS中就显示不出来. 原因分析: 但是现在iOS开发中,苹果已经要求在APP中的所有对外连接 ...
- iOS支持Https
http://oncenote.com/2014/10/21/Security-1-HTTPS/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_s ...
- 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS
地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl, visual c++ 2005, ...
- Web API应用支持HTTPS的经验总结
在我前面介绍的WebAPI文章里面,介绍了WebAPI的架构设计方面的内容,其中提出了现在流行的WebAPI优先的路线,这种也是我们开发多应用(APP.微信.微网站.商城.以及Winform等方面的整 ...
- loadrunner支持https协议的操作方法-经验总结
问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...
- php中curl不支持https的解决办法
在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的cu ...
随机推荐
- JAVA数据源连接方式汇总
最近在研究JAVA的数据源连接方式,学习的时候发现了一位同行写的文章,转载过来,留作记录! 一.问题引入 在java程序中,需要访问数据库,做增删改查等相关操作.如何访问数据库,做数据库的相关操作呢? ...
- Ubuntu12.04 + 虚拟机VMware 9 + Secure CRT + EditPlus 本地C++开发环境搭建
1.1 软件准备 虚拟机VMware 9 Ubuntu 12.04 Secure CRT EditPlus 1.2 安装VMware 9与Ubuntu 12.04 这两个软件安装,按部就班,这里就 ...
- ifram一些常用的知识点
本文摘自:http://www.cnblogs.com/duankaige/archive/2012/09/20/2695012.html iframe的调用包括以下几个方面:(调用包含html ...
- asp.net后台获取路径的各种方法归纳
asp.net后台获取路径的各种方法归纳 1.Request.CurrentExecutionFilePath 获取当前请求的虚拟路径,不同于 FilePath,差别在于如果请求已在服务器代 ...
- 分析windows宿主机Ping不通linux虚拟机的其中一种情况
ping不通的情况是由于设置网络选项的时候,可以看到界面名称的选择如下(当前选择的是无线网卡驱动):
- iOS UICollectionView简单使用
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableVie ...
- import java.util.Scanner;
一.扫描控制台输入 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,,,,,,,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象 ...
- Java ssh 访问windows/Linux
Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...
- C++:类的组合
在类中定义的数据成员一般都是基本数据类型或服复合数据类型.但是还可以根据需要使用 其他类的对象作为正在声明的数据成员.复杂的对象还可以有比较简单的对象一某种方式组合 而成,复杂对象和组成它的简单对象之 ...
- 基于SMB协议的共享文件读写 博客分类: Java
基于SMB协议的共享文件读写 博客分类: Java 一.SMB协议 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445. 服务器信息块(SMB)协议是一种IBM协议,用于在计 ...