#はじめに
インターネット上にあるCocos2d-xとサーバー通信方法の情報が少ないので自身が作ってきたものを投稿にしていく
Cocos2d-xを使用しサーバー通信したい人向けの内容
#サーバー通信の手順
1.通信したい情報をJSON形式で作る
2.JSONをCocos2d-xにてPHPにリクエストする
3.PHPを利用してMySQLに書き込みorデータ読み込みをする
#今回記事にするところ
- JSONの作成
- HTTPリクエスト
#JSONの作成
JSON作成の為にpicojsonを使用する
sample.cpp
#include "picojson.h"
//How to use
picojson::object obj;
obj.insert(std::make_pair("str", picojson::value("test")));
obj.insert(std::make_pair("val1", picojson::value(StringUtils::format("%i", 1)))));
obj.insert(std::make_pair("val2", picojson::value(StringUtils::format("%f", 1.1))));
picojson::value val(obj);
std::string json = val.serialize();
JSONに値を追加する時は[key][値(文字列)]を指定し下記のように追加する
obj.insert(std::make_pair([key], picojson::value([値(文字列)])));
これでJSONデータは完成
#HTTPリクエスト
cocos2d-xにてHTTPリクエストを送信する
sample.cpp
#include "network/HttpRequest.h"
#include "network/HttpClient.h"
//How to use
auto request = new cocos2d::network::HttpRequest();
request->setUrl("リクエストURL");
request->setRequestType(cocos2d::network::HttpRequest::Type::POST);
request->setTag("setInsert");
request->setResponseCallback([=](cocos2d::network::HttpClient* client, cocos2d::network::HttpResponse* response){
if (response->isSucceed()) {
//送信成功時の処理
}else {
//送信失敗時の処理
}
});
//ここから上記のJSON作成
picojson::object obj;
obj.insert(std::make_pair("str", picojson::value("test")));
obj.insert(std::make_pair("val1", picojson::value(StringUtils::format("%i", 1)))));
obj.insert(std::make_pair("val2", picojson::value(StringUtils::format("%f", 1.1))));
picojson::value val(obj);
std::string json = val.serialize();
//ここまで
request->setRequestData(json.c_str(), json.length());
auto httpClient = cocos2d::network::HttpClient::getInstance();
httpClient->enableCookies(nullptr);
httpClient->send(request);
request->release();
これでリクエストURLにJSON形式の文字列を送信する事が可能
#おまけ
今回はCocos2d-xを使用しているが、
- JSON作成
- HTTPリクエスト送信
この二つが出来れば同様にサーバー通信が可能
#Part2
次回はリクエストURLのPHP作成