【问题标题】:send/retrieve xml file to/from server cocos2d-x向/从服务器 cocos2d-x 发送/检索 xml 文件
【发布时间】:2015-09-30 16:40:58
【问题描述】:
我的应用程序将它需要的所有数据保存到存储在设备上的 xml 文件中。当用户打开应用程序时,它会提取该 xml 文件,以便他们可以保留保存的数据。
我希望能够将该 xml 文件上传到服务器,特别是在可能的情况下使用带有 GET/POST 调用的 php 脚本。我知道如何发送和检索单个变量值,但不知道如何发送文件,特别是 xml 文件。
我可以使用 cocos2d HttpRequest/HttpClient 类来实现吗?或者有没有更好的方法。
谢谢
【问题讨论】:
标签:
php
xml
httprequest
cocos2d-x
pugixml
【解决方案1】:
我不熟悉 cocos2d,但是他们的网站有一个通过POST 请求传输文件的示例(这是传输 XML 等数据的更好方法)。
From the cocos3d-x.org wiki:
cocos2d::network::HttpRequest* request = new cocos2d::network::HttpRequest();
request->setUrl("http://www.httpbin.org/post");
request->setRequestType(cocos2d::network::HttpRequest::Type::POST);
request->setResponseCallback( CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this) );
// write the post data
const char* postData = "visitor=cocos2d&TestSuite=Extensions Test/NetworkTest";
request->setRequestData(postData, strlen(postData));
request->setTag("POST test1");
cocos2d::network::HttpClient::getInstance()->send(request);
request->release();
在本例中,他们使用postData 字符串作为数据;您需要将其替换为 XML 内容。
此外,您还应包括以下标准标题:
-
Content-Type: application/xml; charset=utf-8 表示数据类型及其编码
-
Content-Length: 12389128 显示附加数据的长度(以字节为单位)
您还可以探索基本压缩,这应该会显着缩小 XML。