昨天寫了Curl的簡單使用,遇見了幾個坑,今天用HttpClient寫樣例還是遇見了坑~
按照網上的資料寫總是遇見問題。。。應該是版本不一樣!!!下面我來說說HttpClient的使用方法。
首先要引入頭文件和命名空間
#include "network/HttpClient.h" using namespace cocos2d::network;
但是這樣還不行,編譯的話會報錯,無法解析的外部符號.......
出現這個需要添加network庫,添加庫的方式和以前有點不同。3.x有些附加項目在項目中被精簡出去了,如libCocosStudio、libExtensions、libGUI等這些就需要自己手動添加。
添加方式:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄\cocos2d\cocos\network\proj.win32\libNetwork”點擊確定
添加完之後,要對其進行引用,如下圖:
進入“引用”,選擇“添加新引用”,把libNetwork添加進去就好了。。。。纔怪!!!!
還需要添加libcurl_imp.lib,因爲HttpClient是對Curl的封裝!
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初步使用進行的說明,應該還會有後續文章!
如有不足之處,請大家指出,一起交流成長!