前面转载了两篇有关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);
}
}
解释一下这段代码:启动程序,点击屏幕,触发touchEnded这个函数,在这个函数中联网到www.baidu.com,在回调方法中输出获取到的数据,将这些数据保存为html文件,双击这个文件,就是百度首页界面了。
游戏运行终端输出:
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确实是不懂,现在刚刚开始,有点印象,以后用的再深入了解吧!