cocos2d-x向网页请求数据(C++)

HandleLottery函数用来处理网页返回数据

void MyLottery::RequestLottery()
{
	HttpRequest* pHttpReq = new (std::nothrow) HttpRequest();				//一个请求数据封装类,用于HttpClient::send
	pHttpReq->setRequestType(HttpRequest::Type::POST);						//在发送HttpRequest对象前,设置HttpRequest的类型值,它可以是HttpRequest::Type的枚举类型中的任意一个值。
	std::string url = "";
	
	std::string requestData = StringUtils::format("Uid=1005424&Key=%s&LotteryId=2017061401",key);

	pHttpReq->setUrl(url.c_str());											//设置HttpRequest对象的url。 url的值如下:“http://httpbin.org/ip”或“https://httpbin.org/get” 
	pHttpReq->setRequestData(requestData.c_str(), requestData.size());		//设置HttpRequest对象的请求数据。 
	pHttpReq->setTag("requestLottery");										//设置字符串标签用于识别request。 这个字符串标签可以通过HttpResponse->getHttpRequest->getTag()获得。
	pHttpReq->setResponseCallback(CC_CALLBACK_2(MyLottery::HandleLottery, this));//设置target和相关的回调函函数。 当响应返回时,它将调用(pTarget->*pSelector)来处理一些事情。 
	HttpClient::getInstance()->setTimeoutForConnect(6);						//以秒为单位设置连接超时时间。 
   	HttpClient::getInstance()->send(pHttpReq);								//添加一个request到任务队列中 
	pHttpReq->release();
}

void MyLottery::HandleLottery(HttpClient* client, HttpResponse* response)
{
	std::string strMsg;
	if (!response->isSucceed())
	{
		return;
	}
	else
	{
		std::vector<char> *buffer = response->getResponseData();//获取http响应数据。
		std::string strData(buffer->begin(), buffer->end());

		rapidjson::Document doc;
		doc.Parse<0>(strData.c_str());		

		if (doc.HasParseError())
			return;

		if (doc.HasMember("DrawTimes"))
			m_lotteryResult.drawTime = doc["DrawTimes"].GetInt();
		if (doc.HasMember("HitMsg"))
			m_lotteryResult.hitMsg = doc["HitMsg"].GetString();
		if (doc.HasMember("HitTimes"))
			m_lotteryResult.hitTime = doc["HitTimes"].GetInt();
		if (doc.HasMember("IsSuccess"))
			m_lotteryResult.isSuccess = doc["IsSuccess"].GetBool();
		if (doc.HasMember("ItemId"))
			m_lotteryResult.itemId = doc["ItemId"].GetInt();
		if (doc.HasMember("Opportunities"))
			m_lotteryResult.opportunities = doc["Opportunities"].GetInt();
		if (doc.HasMember("UserId"))
			m_lotteryResult.userId = doc["UserId"].GetInt();
	}

	m_opportunityTime->setString(std::to_string(m_lotteryResult.opportunities));

}
key用抓包软件获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值