在cocos2dx中通过php文件访问服务器数据库
2016-03-05 14:10
267 查看
这次分享一下如何在2dx中访问wamp中的数据库的内容,来实现一个登陆的功能,也就是在输入用户名的账号和密码之后,可以通过访问wamp服务器里面的数据库,查询是否存在该用户以及密码是否正确,反馈你是否登陆成功的一个小的demo。
接下来正文:
首先你要在2dx里面使用HttpClient这个类,用于对php文件发送接收请求,来访问数据库的内容。
代码如下:
voidHelloWorld::myhttp()
{
HttpRequest*request=newHttpRequest();//创建请求对象
stringstr1="localhost/testPhp/index.php?";
stringstr2=ntextEdit->getString();//获取username编辑框内容
stringstr3=ptextEdit->getString();//获取password编辑框内容
stringstruser="username=";
stringstrpsw="&password=";
str1=str1+struser+str2+strpsw+str3;
request->setUrl(str1.c_str());//设置请求的url,username和password已经包含在url中
request->setRequestType(HttpRequest::Type::GET);//设置为Get模式
//request->setUrl("https://httpbin.org/get");
//request->setRequestType(HttpRequest::Type::GET);
request->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted,this));
request->setTag("GET
test");
HttpClient::getInstance()->send(request);//发送请求
request->release();//释放请求
}
我的代码注释写得很清楚,总结的来说,就是先把url通过你的字符串把他拼接好,然后发送出去。然后等待响应。响应代码如下:
voidHelloWorld::onHttpRequestCompleted(HttpClient*sender,HttpResponse*response)
{
autoflag=(LabelTTF*)this->getChildByTag(3);
if(!response->isSucceed())//如果响应失败,输出错误信息
{
StringstrError;
strError.initWithFormat("Receive
Error! \n%s\n",response->getErrorBuffer());
flag->setString(strError.getCString());
return;
}
std::vector<char>*buffer=response->getResponseData();//接收响应信息
stringrecieveData;
for(unsignedinti=0;i<buffer->size();i++)
{
recieveData+=(*buffer)[i];
}
size_tbegin=recieveData.find("<body>")+6;//这里简单处理,获取<body>标签内数据,即是响应内容
size_tend=recieveData.find("</body>");
stringresult(recieveData,begin,end-begin);
flag->setString(result.c_str());
}
这里我使用了一个文字标签来显示反馈的内容,如果在服务器的数据库中你可以搜索到正确的用户名和密码,那么他会反馈一个正确信息,如果有错误则会返回一个错误的信息。这样一来我们就可以成功的获得反馈的信息了。
这一讲先说到这里,下一次详细说明php文件怎么写以及如何对应wamp服务器中的数据库。
谢谢大家!
接下来正文:
首先你要在2dx里面使用HttpClient这个类,用于对php文件发送接收请求,来访问数据库的内容。
代码如下:
voidHelloWorld::myhttp()
{
HttpRequest*request=newHttpRequest();//创建请求对象
stringstr1="localhost/testPhp/index.php?";
stringstr2=ntextEdit->getString();//获取username编辑框内容
stringstr3=ptextEdit->getString();//获取password编辑框内容
stringstruser="username=";
stringstrpsw="&password=";
str1=str1+struser+str2+strpsw+str3;
request->setUrl(str1.c_str());//设置请求的url,username和password已经包含在url中
request->setRequestType(HttpRequest::Type::GET);//设置为Get模式
//request->setUrl("https://httpbin.org/get");
//request->setRequestType(HttpRequest::Type::GET);
request->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted,this));
request->setTag("GET
test");
HttpClient::getInstance()->send(request);//发送请求
request->release();//释放请求
}
我的代码注释写得很清楚,总结的来说,就是先把url通过你的字符串把他拼接好,然后发送出去。然后等待响应。响应代码如下:
voidHelloWorld::onHttpRequestCompleted(HttpClient*sender,HttpResponse*response)
{
autoflag=(LabelTTF*)this->getChildByTag(3);
if(!response->isSucceed())//如果响应失败,输出错误信息
{
StringstrError;
strError.initWithFormat("Receive
Error! \n%s\n",response->getErrorBuffer());
flag->setString(strError.getCString());
return;
}
std::vector<char>*buffer=response->getResponseData();//接收响应信息
stringrecieveData;
for(unsignedinti=0;i<buffer->size();i++)
{
recieveData+=(*buffer)[i];
}
size_tbegin=recieveData.find("<body>")+6;//这里简单处理,获取<body>标签内数据,即是响应内容
size_tend=recieveData.find("</body>");
stringresult(recieveData,begin,end-begin);
flag->setString(result.c_str());
}
这里我使用了一个文字标签来显示反馈的内容,如果在服务器的数据库中你可以搜索到正确的用户名和密码,那么他会反馈一个正确信息,如果有错误则会返回一个错误的信息。这样一来我们就可以成功的获得反馈的信息了。
这一讲先说到这里,下一次详细说明php文件怎么写以及如何对应wamp服务器中的数据库。
谢谢大家!
相关文章推荐
- Cocos2d-x中的精灵
- cocos2dx在mac下的app打包方法
- Cocos2d-x中的字符串
- cocos2dx3.10 ClippingNode存在的bug
- cocos2dx 事件侦听
- cocos2dx 定时器
- cocos2dx 按钮与标签
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴
- cocos2d-js侧滑菜单SlidingMenu
- cocos2d-js自定义CheckBox
- cocos2dx 中文(韩文)显示方法
- cocos2dx 场景切换特效
- 图片帧动画-Quick-Cocos2dx
- cocospod 安装和使用
- 【cocos2dx 3.x】延时调用
- cocos2dx Action 特效
- cocos2dx Action 动作
- cocos2dx 基础