cocos2d-x中的curl

转自: cocos2d-x中的curl


将请求的接口的动作放在互斥锁中进行

pthread_mutex_t mutex;
pthread_t thread;
sem_t * m_structSem;
struct SimpleStructure
{
int data;
float otherData;
};
void* ThreadFunction(void* arg)
{
pthread_mutex_lock(&mutex);
SimpleStructure* args = (SimpleStructure*)arg;
//todo...
delete args;
pthread_mutex_unlock(&mutex);
pthread_mutex_destroy(&mutex);
sem_destroy(m_structSem);
return NULL;
}
pthread_mutex_init(&mutex, NULL);
m_structSem = sem_open(strThreadName.c_str(), O_CREAT, 0644, 0)
//
SimpleStructure* args = new SimpleStructure();
args->data = 1;
args->otherData = 2.0f;
//
pthread_create(&thread, NULL, &ThreadFunction, args);


使用CURL(Cocos2d-x中将curl做为第三方库加入进来,它被放在cocos2dx/platform/third-party/win32的curl目录下)

  CURL * curl;

   

  string strHtml;

  string strRetData = "";

   

  //第一步:初始化CURL,取得初始化成功后的CURL指针。

  curl = curl_easy_init();

   

  if (!curl)

 {

     return false;

 }

  

 CCLOG("Http get string, conn: %s, url: %s", strConnName.c_str(), strUrl.c_str());

  

 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);

 curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strHtml);

 curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);

 curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);

  

 //这里定义一个CURL库中API的返回值,用于取得API调用的结果。  

 CURLcode res;

  

 //第二步,设定我们用此CURL指针来完成的动作。

 //参数一为CURL指针,参数二为相应的动作类型枚举,这个枚举值在curl.h中定义,比如本例中的CURLOPT_URL,定义为CINIT(URL,  OBJECTPOINT, 2),即联接一个网站的HTTP服务。

 //参数三为动作对应的数据参数,这里是网站的URL地址。  

 curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());

  

 ///第三步,执行上面设定的动作处理。返回结果放在res中。  

 res = curl_easy_perform(curl);  

  

 //最后一步,清除CURL指针,结束对CURL库的使用。  

 curl_easy_cleanup(curl); 

  

 if (res == CURLE_OK)

 {

     strRetData = strHtml;

  

     CCLOG("Http get string, conn: %s, ret: %s", strConnName.c_str(), strRetData.c_str());    

 }

 else 

 {

     //request error

 }

 strRetData = "";
 CC_SAFE_DELETE(curl);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值