肖锐(Cooki)个人原创,欢迎转载,转载请注明地址,肖锐(Cooki)的技术博客 http://blog.csdn.net/xiao0026

 由于游戏用到了网络头像, 今天发现换成facebook登陆后头像下载失败, 2dx默认的没有支持https, 于是找到 network/

HttpClient.cpp

  1. int processGetTask(CCHttpRequest *request, write_callback callback, void *stream, int *responseCode)
  2. {
  3. CURLcode code = CURL_LAST;
  4. CURL *curl = curl_easy_init();
  5. do {
  6. if (!configureCURL(curl))
  7. {
  8. break;
  9. }
  10. /* handle custom header data */
  11. /* create curl linked list */
  12. struct curl_slist *cHeaders=NULL;
  13. /* get custom header data (if set) */
  14. std::vector<std::string> headers=request->getHeaders();
  15. if(!headers.empty())
  16. {
  17. for(std::vector<std::string>::iterator it=headers.begin();it!=headers.end();it++)
  18. {
  19. /* append custom headers one by one */
  20. cHeaders=curl_slist_append(cHeaders,it->c_str());
  21. }
  22. /* set custom headers for curl */
  23. code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, cHeaders);
  24. if (code != CURLE_OK) {
  25. break;
  26. }
  27. }
  28. code = curl_easy_setopt(curl, CURLOPT_URL, request->getUrl());
  29. if (code != CURLE_OK)
  30. {
  31. break;
  32. }
  33. code = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, request->getUrl());
  34. if (code != CURLE_OK)
  35. {
  36. break;
  37. }
  38. code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
  39. if (code != CURLE_OK)
  40. {
  41. break;
  42. }
  43. code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
  44. if (code != CURLE_OK)
  45. {
  46. break;
  47. }
  48. code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
  49. if (code != CURLE_OK) {
  50. break;
  51. }
  52. code = curl_easy_perform(curl);
  53. if (code != CURLE_OK)
  54. {
  55. break;
  56. }
  57. /* free the linked list for header data */
  58. curl_slist_free_all(cHeaders);
  59. code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, responseCode);
  60. if (code != CURLE_OK || *responseCode != 200)
  61. {
  62. code = CURLE_HTTP_RETURNED_ERROR;
  63. }
  64. } while (0);
  65. if (curl) {
  66. curl_easy_cleanup(curl);
  67. }
  68. return (code == CURLE_OK ? 0 : 1);
  69. }
  70. //Process POST Request
  71. int processPostTask(CCHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode)
  72. {
  73. CURLcode code = CURL_LAST;
  74. CURL *curl = curl_easy_init();
  75. do {
  76. if (!configureCURL(curl)) {
  77. break;
  78. }
  79. /* handle custom header data */
  80. /* create curl linked list */
  81. struct curl_slist *cHeaders=NULL;
  82. /* get custom header data (if set) */
  83. std::vector<std::string> headers=request->getHeaders();
  84. if(!headers.empty())
  85. {
  86. for(std::vector<std::string>::iterator it=headers.begin();it!=headers.end();it++)
  87. {
  88. /* append custom headers one by one */
  89. cHeaders=curl_slist_append(cHeaders,it->c_str());
  90. }
  91. /* set custom headers for curl */
  92. code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, cHeaders);
  93. if (code != CURLE_OK) {
  94. break;
  95. }
  96. }
  97. code = curl_easy_setopt(curl, CURLOPT_URL, request->getUrl());
  98. if (code != CURLE_OK) {
  99. break;
  100. }
  101. code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
  102. if (code != CURLE_OK) {
  103. break;
  104. }
  105. code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
  106. if (code != CURLE_OK) {
  107. break;
  108. }
  109. code = curl_easy_setopt(curl, CURLOPT_POST, 1);
  110. if (code != CURLE_OK) {
  111. break;
  112. }
  113. code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
  114. if (code != CURLE_OK) {
  115. break;
  116. }
  117. code = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request->getRequestData());
  118. if (code != CURLE_OK) {
  119. break;
  120. }
  121. code = curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, request->getRequestDataSize());
  122. if (code != CURLE_OK) {
  123. break;
  124. }
  125. code = curl_easy_perform(curl);
  126. if (code != CURLE_OK) {
  127. break;
  128. }
  129. /* free the linked list for header data */
  130. curl_slist_free_all(cHeaders);
  131. code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, responseCode);
  132. if (code != CURLE_OK || *responseCode != 200) {
  133. code = CURLE_HTTP_RETURNED_ERROR;
  134. }
  135. } while (0);
  136. if (curl) {
  137. curl_easy_cleanup(curl);
  138. }
  139. return (code == CURLE_OK ? 0 : 1);
  140. }
  1. code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
  2. if (code != CURLE_OK) {
  3. break;
  4. }
    1. 加入这一段curl代码, 即可支持解析https解析,不管是get还是post都可

【转】让 cocos2d-x 的 CCHttpRequest 支持https的更多相关文章

  1. node如何让一个端口同时支持https与http

    众所周知node是一个高性能的web服务器,使用它可以很简单的创建一个http或https的服务器. 比如一个很简单的http服务器: var http = require('http'); var ...

  2. 如何让你的网站支持https

    如何让你的网站支持https 当今世界的主流网站基本都是使用https对外界提供服务,甚至有某些公司建议完全使用https, 那么https是什么呢?请参考如下的图解,https是在我们通常说的tcp ...

  3. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级

    为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...

  4. 在iOS APP中使用H5显示百度地图时如何支持HTTPS?

    现象: 公司正在开发一个iOSAPP,使用h5显示百度地图,但是发现同样的H5页面,在安卓可以显示出来,在iOS中就显示不出来. 原因分析: 但是现在iOS开发中,苹果已经要求在APP中的所有对外连接 ...

  5. iOS支持Https

    http://oncenote.com/2014/10/21/Security-1-HTTPS/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_s ...

  6. 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS

    地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl,  visual c++ 2005, ...

  7. Web API应用支持HTTPS的经验总结

    在我前面介绍的WebAPI文章里面,介绍了WebAPI的架构设计方面的内容,其中提出了现在流行的WebAPI优先的路线,这种也是我们开发多应用(APP.微信.微网站.商城.以及Winform等方面的整 ...

  8. loadrunner支持https协议的操作方法-经验总结

    问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...

  9. php中curl不支持https的解决办法

    在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的cu ...

随机推荐

  1. [nowCoder] 局部最小值位置

    定义局部最小的概念.arr长度为1时,arr[0]是局部最小.arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小:如果arr[N-1]<arr[ ...

  2. js正则函数match、exec、test、search、replace、split使用介绍

    match() 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) stringObj 必选项.对其进行查找的 String 对象或字符 ...

  3. hdu 4315 Climbing the Hill 博弈论

    题意:有n个人爬山,山顶坐标为0,其他人按升序给出,不同的坐标只能容纳一个人(山顶不限),Alice和Bob轮流选择一个人让他移动任意步,但不能越过前面的人,且不能和前面一个人在相同的位置.现在有一个 ...

  4. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

  5. java打印时间精确到毫秒

    package net.floodlightcontroller.conflict; import java.io.*; import java.util.*; import java.text.Si ...

  6. Unrecognized Windows Sockets error: 0: JVM_Bind异常

    根据端口查看 根据PID查看具体的进程 任务管理器->查看-选择列,选中PID 然后查看任务管理器.

  7. 使用Css截取字符串

    white-space:nowrap; /* 禁止自动换行 */ overflow:hidden; /* 隐藏溢出的内容 */ text-overflow:ellipsis; /* 溢出文本使用... ...

  8. 机器学习第三课(EM算法和高斯混合模型)

    极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一.说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值. ...

  9. 目标检测的图像特征提取之(三)Haar特征

    1.Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征. Haar特征分为三类:边缘特征.线性 ...

  10. 【Linux高频命令专题(13)】cat

    概述 常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. cat主要有三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一 ...