cocos2dx 3.3rc0 踩坑日記(二)------ HttpClient 的使用

    昨天寫了Curl的簡單使用,遇見了幾個坑,今天用HttpClient寫樣例還是遇見了坑~j_0012.gif

    按照網上的資料寫總是遇見問題。。。應該是版本不一樣!!!下面我來說說HttpClient的使用方法。

    首先要引入頭文件和命名空間

#include "network/HttpClient.h"
using namespace cocos2d::network;

    但是這樣還不行,編譯的話會報錯,無法解析的外部符號.......

    出現這個需要添加network庫,添加庫的方式和以前有點不同。3.x有些附加項目在項目中被精簡出去了,如libCocosStudio、libExtensions、libGUI等這些就需要自己手動添加。

    添加方式:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄\cocos2d\cocos\network\proj.win32\libNetwork”點擊確定

    添加完之後,要對其進行引用,如下圖:

    wKioL1SAHaHBjOc_AAJhI1CIkrs838.jpg



    進入“引用”,選擇“添加新引用”,把libNetwork添加進去就好了。。。。纔怪!!!!

    還需要添加libcurl_imp.lib,因爲HttpClient是對Curl的封裝!

    wKiom1SAHerhLX4VAAF_NAPwhtc403.jpg    把樣例的代碼改成如下代碼:

void HelloWorld::TouchEnded(Touch *pTouch, Event *pEvent) 
{
	log("HelloWorld::TouchEnded");
	//創建請求對象
	HttpRequest *request = new HttpRequest();
	//設置請求的url
	request->setUrl("www.baidu.com");
	//設置爲Get模式
	request->setRequestType(HttpRequest::Type::GET);
	//設置響應的回調  
	request->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted, this));
	request->setTag("test");
	//發送請求
	HttpClient::getInstance()->send(request);
	//釋放請求
	request->release();
}
void HelloWorld::onHttpRequestCompleted(HttpClient *sender, HttpResponse *response)
{
	if (response->isSucceed())
	{
		mLabel->setString("Connect successfully!");
	}
	else
	{
		char buf[128];
		long res = response->getResponseCode();
		sprintf(buf,"code: %i",res);
		mLabel->setString(buf);
	}
}

    就可以實現curl樣例的效果了!!!!

    最後還有個不能漏的,必須在在退出的時候調用HttpClient::getInstance()->destroyInstance();否則在你關閉窗口的時候會報錯!!!!

    這篇是HttpClient初步使用進行的說明,應該還會有後續文章!

    如有不足之處,請大家指出,一起交流成長!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章