curl检查远程文件是否存在
size_t processdata(void *buffer, size_t size, size_t nmemb, void *user_p) { //写一个空的写函数 return nmemb; } bool checkURLFileExist(std::string &path) { CURL *handle = curl_easy_init(); if (! handle) { CCLOG("can not init curl"); return false; } // 设置本次会话的参数 // URL,就是我们要验证的网址 curl_easy_setopt(handle,CURLOPT_URL,path.c_str()); // 设置连接超时 curl_easy_setopt(handle,CURLOPT_CONNECTTIMEOUT,5); // 只是获取HTML的header curl_easy_setopt(handle,CURLOPT_HEADER,true); curl_easy_setopt(handle,CURLOPT_NOBODY,true); // 设置最大重定向数为0,不允许页面重定向 curl_easy_setopt(handle,CURLOPT_MAXREDIRS,0); // 设置一个空的写入函数,屏蔽屏幕输出 curl_easy_setopt(handle,CURLOPT_WRITEFUNCTION,&processdata); // 以上面设置的参数执行这个会话,向服务器发起请求 curl_easy_perform(handle); // 获取HTTP的状态代码 // 根据代码判断网址是否有效 int retcode = 0; curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE , &retcode); bool res = false; // 如果HTTP反应代码为200,表示网址有效 if(200 == retcode) { res = true; } // 执行会话的清理工作 curl_easy_cleanup(handle); return res; }