cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析
来源:互联网 发布:java线程是什么意思 编辑:程序博客网 时间:2024/06/16 19:32
//http需要引入的头文件和命名空间#include <network/HttpClient.h>using namespace network;
//json需要引入的头文件#include <json/document.h>
//然后声名两个函数 void http();//用于执行http请求 void onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response);// http请求的回调
void Nice::http(){ //创建一个get请求 HttpRequest* request = new HttpRequest(); request->setUrl("http://api.map.baidu.com/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=Gk0Bbh9H4iREjesugyEqySN7"); request->setRequestType(HttpRequest::Type::GET); request->setResponseCallback(CC_CALLBACK_2(Nice::onHttpRequestCompleted, this)); request->setTag("json"); HttpClient::getInstance()->send(request); request->release(); //创建一个post请求 HttpRequest* request_post = new HttpRequest(); request_post->setUrl("http://httpbin.org/post"); request_post->setRequestType(HttpRequest::Type::POST); std::vector<std::string> headers; headers.push_back("Content-Type: application/json; charset=utf-8"); request_post->setHeaders(headers); request_post->setResponseCallback(CC_CALLBACK_2(Nice::onHttpRequestCompleted, this)); //post数据 const char* postData = "visitor=cocos2d&TestSuite=Extensions Test/NetworkTest"; request_post->setRequestData(postData, strlen(postData)); request_post->setTag("POST test2"); HttpClient::getInstance()->send(request_post); request_post->release();}void Nice::onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response){ if (!response) { return; } if (0 != strlen(response->getHttpRequest()->getTag())) { log("%s completed",response->getHttpRequest()->getTag()); } long statusCode = response->getResponseCode(); char statusString[64] = {}; sprintf(statusString, "HTTP Status Code: %ld, tag = %s",statusCode,response->getHttpRequest()->getTag()); log("response code: %ld",statusCode); if (!response->isSucceed()) { log("response failed"); log("error buffer: %s",response->getErrorBuffer()); return; } std::vector<char>* buffer = response->getResponseData(); printf("Http Test, dump data: "); for (unsigned int i = 0 ; i < buffer->size();i++) { printf("%c",(*buffer)[i]); } //将std::vector(char)* 转换成 std::string的两种方法 std::string backStr = std::string(&(*buffer->begin()), buffer->size()); std::string anotherStr; anotherStr.insert(anotherStr.begin(), buffer->begin(), buffer->end()); printf("%s\n", backStr.c_str()); printf("%s\n", anotherStr.c_str()); printf("\n"); if (strcmp(response->getHttpRequest()->getTag(), "json") == 0) { rapidjson::Document doc; doc.Parse<0>(backStr.c_str()); const rapidjson::Value& v = doc["status"]; printf("status is : %s",v.GetString()); const rapidjson::Value& dir = doc["results"]; if (dir.IsArray()) { unsigned int i = 0; const rapidjson::Value& city = dir[i]["currentCity"]; log("city is %s", city.GetString()); //多层测试 const rapidjson::Value& title = doc["results"][(unsigned int)0]["index"][(unsigned int)2]["title"]; log("the title is %s", title.GetString()); } } }
0 0
- cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析
- cocos2d-x http请求
- cocos2d-x 3.1.1 学习笔记[21]cocos2d-x 创建过程
- cocos2d-x Json解析
- Cocos2d-x学习笔记(十三)—— 数据解析(json/xml)
- cocos2d-x 网络请求 Http
- swift 学习笔记1 -- json解析、网络请求、[myClass class]
- IOS学习笔记,网络请求,json解析
- quick-cocos2d-x解析json
- cocos2d-x json解析 jsonBox
- cocos2d-x json解析 jsonBox
- cocos2d-x json解析 jsonBox
- cocos2d-x lua json解析
- cocos2d-x RapidJson解析json
- 学习cocos2d-x笔记-1
- cocos2d-x 学习笔记1
- cocos2d-x 学习笔记1
- Cocos2d-x学习笔记1
- 7.14_E题
- 5.9 枚举类型
- sqlserver的表触发器和定时器
- Surciata源码分析之IpsNFQ模式(2)
- 阶乘之和
- cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析
- linux下搭建SVN服务器完全手册
- 有关于dmx控制器的相关使用问题以及当中的特点
- android apk 代码混淆
- eclipse 建立的dynamic web project中无法高亮显示jsp中相同变量,不是很方便啊!
- ViewPager和Fragment
- Windows下的Memcache安装:
- Unicode编码
- 64位win8.1 IIS配置以及问题解决方法