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;

}

 

你可能感兴趣的:(curl)