博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libcurl以get方式请求服务器端文件
阅读量:6510 次
发布时间:2019-06-24

本文共 1929 字,大约阅读时间需要 6 分钟。

static size_t callbackfunction(void *ptr, size_t size, size_t nmemb, void* userdata)

{
    FILE* stream = (FILE*)userdata;
    if (!stream) {
        printf("!!! No stream\n");
        return 0;
    }
    size_t written = fwrite((FILE*)ptr, size, nmemb, stream);
    return written;

}

 

unsigned char* HttpsRequest::requestOnlineImage(const char* url, int& resultLen)

{
    FILE* fp = fopen("D:\\out.png", "wb");
    if (!fp) {

        printf("!!! Failed to create file on the disk\n");

        return false;
    }
    unsigned char* result = NULL;
    CURL* mCurl = curl_easy_init();
    if (!mCurl) {
        return NULL;

    }

    //struct curl_slist* mHeaders = NULL;

    //mHeaders = curl_slist_append(mHeaders, "Cache-Control:max-age=0");

    //mHeaders = curl_slist_append(mHeaders, "Connection:keep-alive");
    //mHeaders = curl_slist_append(mHeaders, "*/*");
    //mHeaders = curl_slist_append(mHeaders, "Host:cpi.cn-hangzhou.oss-pub.aliyun-inc.com");
    // mHeaders = curl_slist_append(mHeaders, "User-Agent:com.yunos.map/pc");
    //mHeaders = curl_slist_append(mHeaders, "Content-type:image/png");
    //mHeaders = curl_slist_append(mHeaders, "Response-type:application/octet-stream");
    //mHeaders = curl_slist_append(mHeaders, "Accept-Encoding:gzip, deflate");
    struct MemoryStruct chunk;
    chunk.memory = (unsigned char*)malloc(1);
    chunk.size = 0;
    curl_easy_setopt(mCurl, CURLOPT_URL, url);
    //curl_easy_setopt(mCurl, CURLOPT_HTTPHEADER, mHeaders);
    curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, callbackfunction);
    curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, fp);
    CURLcode mRes = curl_easy_perform(mCurl);
    if (mRes != CURLE_OK){
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(mRes));

    }

    else {
        printf("%s\n", chunk.memory);
        if (chunk.size > 0) {
            result = (unsigned char*)malloc(chunk.size);
            memcpy(result, chunk.memory, chunk.size);
            resultLen = chunk.size;
        }
    }
    curl_slist_free_all(mHeaders);
    free(chunk.memory); 
    curl_easy_cleanup(mCurl);
    mCurl = NULL;
    return result;

}

转载于:https://www.cnblogs.com/hustdc/p/6846075.html

你可能感兴趣的文章
address元素
查看>>
Android View体系(六)从源码解析Activity的构成
查看>>
详解ASP.NET Core Docker部署
查看>>
fnmatch源码阅读
查看>>
U9249 【模板】BSGS
查看>>
单片机小白学步系列(九) 用万用焊板搭建实验电路
查看>>
Tomcat PK Resin
查看>>
(转)全文检索技术学习(三)——Lucene支持中文分词
查看>>
Node.js+Koa开发微信公众号个人笔记(一)准备工作
查看>>
Android 图片缓存处理
查看>>
MySQL数据库锁定机制
查看>>
elasticsearch
查看>>
阿里盒马领域驱动设计实践
查看>>
vuex 存值 及 取值 的操作
查看>>
HDU 2242 考研路茫茫——空调教室(边双连通)
查看>>
如何在C#项目中使用NHibernate
查看>>
安装python包到指定虚拟环境
查看>>
力扣(LeetCode)21
查看>>
网页视频流m3u8/ts视频下载
查看>>
聊聊flink的TableFactory
查看>>