cocos2dx之如何使用HttpClient进行网络通讯
发布时间:2020-12-14 19:33:36 所属栏目:百科 来源:网络整理
导读:关于HttpClient的简介 HttpClient的应该用已经十分广泛.HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性. HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HT
关于HttpClient的简介
HttpClient的应该用已经十分广泛.HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性.
HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient它以可扩展的面向对象的结构实现了Http全部的方法(GET,POST,PUT,DELETE,HEAD,OPTIONS,and TRACE)。
关于HTTP的POST、GET、HEAD、PUT
请求方法是请求一定的Web页面的程序或用于特定的URL。http可选用的请求方法有很多种,这里只列举下列几种:
GET:客户端向服务器请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。 POST:客户端请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT:从客户端向服务器传送的数据取代指定的文档的内容。
其中get和post是我们游戏中最常用到的.
如何使用cocos2dx的HttpClient
下面直接进入我们的主题,如何使用cocos2dx的HttpClient,这个其实很简单.寥寥不多的几行代码就搞定了.
首先,加入头文件:
#include "extensions/cocos-ext.h" #include "network/HttpClient.h” using namespace cocos2d::network; 使用时的如下: HttpRequest* request1 = new HttpRequest(); request1->setRequestType(HttpRequest::Type::GET);//这里是GET请求 request1->setUrl("https://httpbin.org/get"); request1->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted,this)); HttpClient::getInstance()->send(request1); request1->release(); HttpRequest* request2 = new HttpRequest(); request2->setUrl("http://httpbin.org/post"); request2->setRequestType(HttpRequest::Type::POST);//这里是POST请求 request2->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted,this)); // write the post data const char* postData = "visitor=cocos2d&TestSuite=Extensions Test/NetworkTest"; request2->setRequestData(postData,strlen(postData)); request2->setTag("POST test1"); cocos2d::network::HttpClient::getInstance()->send(request2); request2->release(); 简单滴解析一下,上面用的服务端也是cocos引擎里面官方test中的地址,分别是: https://httpbin.org/get http://httpbin.org/post 本文是参考test中C++写的,test中也有lua版本的哦. 其中onHttpRequestCompleted是响应的函数.我这里是参考官方的test写的,只是把数据在log输出.没有进行其他的处理
编辑响应的函数onHttpRequestCompleted(),代码如下 void HelloWorld::onHttpRequestCompleted(HttpClient*sender,HttpResponse *response) { if (!response) { return; } // You can get original request type from: response->request->reqType 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()); // _labelStatusCode->setString(statusString); log("response code: %ld",statusCode); if (!response->isSucceed()) { log("response failed"); log("error buffer: %s",response->getErrorBuffer()); return; } // dump data std::vector<char> *buffer = response->getResponseData(); printf("Http Test,dump data: "); for (unsigned int i = 0; i < buffer->size(); i++) { printf("%c",(*buffer)[i]); } printf("n"); } ____________________________ 相关资料推荐: http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/httpclient/zh.md cocos2dx官方开发者文档--如何使用HttpClient:
http://www.2cto.com/kf/201404/295863.html cocos2d-x3.0 实现HTTP请求GET、POST
http://www.2cto.com/kf/201409/333393.htmlCocos2d-x3.1 HttpClient封装与使用http://blog.csdn.net/wangpeng047/article/details/19624529 HttpClient使用详解
http://changfakong.diandian.com/post/2012-02-13/15973956 HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |