Cocos2dx之http网络请求

先包含进extensions目录


CCHttpClient就是要用的类



客户端代码:

先引入头文件和命名空间

#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;

然后直接上点击发送按钮的回调函数请求网络

//点击按钮的回调函数
void TestLayer::btncallback(CCObject* pSender)
{
	bool requestType_is_get = false;//采用get方式或者post方式
	if (requestType_is_get)
	{
		CCHttpRequest* request = new CCHttpRequest();//创建请求对象
		string str1 = "http://127.0.0.1:8080/b_springmvc_cms/cocos2dx.do";
		string str2 = p_User_EditBox->getText();
		string str3 = p_Psw_EditBox->getText();
		string struser = "?username=";//注意在get方式请求后面加个?问号,再加上请求参数
		string strpsw = "&password=";
		str1 = str1 + struser + str2 + strpsw + str3;
		CCLOG("GetType data : %s", str1.c_str());
		request->setUrl(str1.c_str());//设置请求的url,username和password已经包含在url中
		request->setRequestType(CCHttpRequest::kHttpGet);//设置为Get模式
		request->setResponseCallback(this, httpresponse_selector(TestLayer::onHttpRequestCompleted));//设置响应的回调
		request->setTag("getTag");//可以在回调函数中取到这个tag字符串
		CCHttpClient::getInstance()->send(request);//发送请求
		request->release();//释放请求
	}
	else
	{
		CCHttpRequest* request = new CCHttpRequest();//创建请求对象
		string str1 = "http://127.0.0.1:8080/b_springmvc_cms/cocos2dx.do";
		string str2 = p_User_EditBox->getText();
		string str3 = p_Psw_EditBox->getText();
		string struser = "username=";
		string strpsw = "&password=";
		str2 = struser + str2 + strpsw + str3;
		
		request->setUrl(str1.c_str());//设置请求的url,只是请求页面的url,并不包含username和password
		request->setRequestType(CCHttpRequest::kHttpPost);//设置为Post模式
		request->setResponseCallback(this, httpresponse_selector(TestLayer::onHttpRequestCompleted));//设置响应的回调
		const char* postData = str2.c_str();
		CCLOG("PostType data : %s", postData);

		request->setRequestData(postData, strlen(postData));//设置请求数据,也就是username和password
		request->setTag("postTag");//可以在回调函数中取到这个tag字符串
		CCHttpClient::getInstance()->send(request);//发送请求
		request->release();//释放请求
	}
}

接着就是响应的回调函数

void TestLayer::onHttpRequestCompleted(CCHttpClient* client, CCHttpResponse* response)
{
	if (!response->isSucceed())//如果响应失败,输出错误信息
	{
		CCString strError;
		strError.initWithFormat("Receive Error! \n%s\n", response->getErrorBuffer());
		m_labelStatusCode->setString(strError.getCString());
		return;
	}

	std::vector<char> *buffer = response->getResponseData();//接收响应信息
	string recieveData;
	for (unsigned int i = 0; i < buffer->size(); i++)
	{
		recieveData += (*buffer)[i];
	}
	const char* tag = response->getHttpRequest()->getTag();
	CCLOG("Receive data : %s , tag=%s", recieveData.c_str(), tag);
	m_labelStatusCode->setString(recieveData.c_str());
}

服务端代码:

服务端用的是tomcat,控制层用springmvc框架搭建的,这里指定了用只接受POST方式的请求

@Controller
public class Cocos2dxAction {

	@RequestMapping(value = "/cocos2dx.do",method=RequestMethod.POST)
	@ResponseBody
	public String cocos2dx(
			@RequestParam(value = "username") String username,
			@RequestParam(value = "password") String password) {
		System.out.println("recive success , username=" + username
				+ " , password=" + password);
		
		String string = "server message !";
		return string;
	}

}

效果:

请求前:



请求后:



eclipse控制台输出的信息:



源码地址:http://download.csdn.net/detail/jackyvincefu/6713471

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值