cocos2dx之如何使用HttpClient进行网络通讯

cocos2dx之如何使用HttpClient进行网络通讯,第1张

概述关于HttpClient的简介 HttpClient的应该用已经十分广泛. HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性. HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient它以可扩展的面向对象的结构 关于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等请求方法以及一些常见错误 总结

以上是内存溢出为你收集整理的cocos2dx之如何使用HttpClient进行网络通讯全部内容,希望文章能够帮你解决cocos2dx之如何使用HttpClient进行网络通讯所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1015904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存