Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx之如何使用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进行网络通讯所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。