注:本文为作者原创,其中知识内容出自闪电终结者的视频课程
首先要强调一点,因为网络访问与Cocos的线程是不同的,网络访问需要自己的子线程(网络请求是需要时间的),所以在写代码时候无法将发生请求和请求数据写在一起,会导致无法请求到正确的数据,所以需要将请求数据之后调用的方法写在一个函数中,使用httpRequest类的setResponseCallback()函数来指定方法。
进入正题
上次把创建请求之类的都放在init()里,其实是不好的,如果会有多次请求,就需要创建多次HttpRequest对象
所以封装一个NetworkRequest类来实现
// NetworkRequest.hpp
#include <network/httpClient.h>
#include <string>
#include <functional>
class NetworkRequest {
// url地址
std::string url;
// 表单数据,可有可无
std::string postData;
// 请求对象
cocos2d::network::HttpRequest *request;
// 数据请求之后调用的方法
void networkRequestCallBack(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response);
public:
NetworkRequest(const std::string &url, const std::string &postData = "");
// 实例化一个对象时候,如果需要立刻执行网络请求,则把send()写入构造函数里
virtual ~NetworkRequest();
// 发生请求
void send();
};
// NetworkRequest.cpp