前面转载了两篇有关cURL的文章,都很详细 。说实话,看的不是很懂。下面通过引擎中的一个例子来看看。
(1)关于这个curl这个类的文件所在位置,libs/cocos2dx/platform/third_party/ios/curl 就可以看到curl有关的文件了。
(2)关于引擎中自带的例子:CurlTest
其中与curl有关的代码如下:
void CurlTest::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) { CURL *curl; CURLcode res; char buffer[10]; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "www.google.com"); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); if (res == 0) { m_pLabel->setString("0 response"); } else { sprintf(buffer,"code: %i",res); m_pLabel->setString(buffer); } } else { m_pLabel->setString("no curl"); } }
(3)下面是一个类似的代码:
注意添加: curl_global_init(CURL_GLOBAL_DEFAULT) -- 全局初始化函数,程序中只调用一次。参数包括:
#define CURL_GLOBAL_SSL (1<<0) #define CURL_GLOBAL_WIN32 (1<<1) #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) #define CURL_GLOBAL_NOTHING 0 #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
//定义的写数据的回调函数。 但是在回调函数中只是将获取到的数据输出而已 size_t write_data(void *buffer, size_t size, size_t nmemb, void *stream) { printf("%s",(char*)buffer); return size*nmemb;//这里一定要返回实际返回的字节数 } //修改触屏结束的函数处理。 void HelloWorld::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) { //首先,使用CURL必须要创建一个CULR指针,它是CURL的全局句柄。 CURL *curl; //这里定义一个CURL库中API的返回值,用于取得API调用的结果。 CURLcode res; //第一步:初始化CURL,取得初始化成功后的CURL指针。 curl = curl_easy_init(); if(curl) { //第二步,设定我们用此CURL指针来完成的动作。参数一为CURL指针,参数二为相应的动作类型枚举,这个枚举值在curl.h中定义,比如本例中的CURLOPT_URL,定义为CINIT(URL, OBJECTPOINT, 2),即联接一个网站的HTTP服务。参数三为动作对应的数据参数,这里是网站的URL地址。 curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); // curl_easy_setopt //设置写数据的回调函数。 res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); if(res != CURLE_OK){ printf("curl_easy_setopt not return CURLE_OK\n"); } else{ printf("curl_easy_setopt exec success\n"); } //第三步,执行上面设定的动作处理。返回结果放在res中。 res = curl_easy_perform(curl); if(res != CURLE_OK){ printf("curl_easy_perform not return CURLE_OK\n"); } else{ printf("curl_easy_perform exec success\n"); } /* always cleanup */ //最后一步,清除CURL指针,结束对CURL库的使用。 curl_easy_cleanup(curl); } }
游戏运行终端输出:
curl_easy_setopt exec success
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>百度一下,你就知道</title><style >html,body{height:100%}html{overflow-y:auto}#wrapper{position:relative;_position:;min-height:100%}#content{padding-bottom:100px;text-align:center}#ftCon{height:100px;position:absolute;bottom:44px;text-。。。。。。。。。。。。。。。。。
curl_easy_perform exec success
总结:说实话,对应cURL确实是不懂,现在刚刚开始,有点印象,以后用的再深入了解吧!