• libcurl解压gzip编码


    cocos2d-x 2.1.3使用libcurl请求数据的时候若要指定返回数据编码可以设置header如下

    CCHttpRequest* request = new CCHttpRequest();
    // set base param
    request->setUrl(url);
    request->setRequestType(type);
    request->setResponseCallback(this, httpresponse_selector(yourClass::onHttpRequestCompleted));
    request->setRequestData(requestDataBuffer, requestDataBufferLength);
    request->setTag(tag);
    
    // set header
    std::vector<std::string> header;
    header.push_back("Accept-Encoding:gzip,deflate");
    request->setHeaders(header);

    然后在接受数据的时候若需要libcurl自动解压数据只需要在合适的地方加上

    // 最后一个参数就写一个空字符串,这样libcurl会根据返回数据解压它所支持的所有编码格式
    curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");

    我这里将“合适的地方”定位在了 函数:

    configureCURL

    里面。

    反正要放在设置网络数据接受回调函数之前,也就是下面这句代码。否则会导致libcurl没有解压数据。

    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);

     

    若要检测libcurl编译的版本是否包含zlib可以加上这句代码

    CCLog("curl version: %s", curl_version());

    打印libcurl版本包含的信息。

     

    参考文档:

    http://curl.haxx.se/dev/readme-encoding.html

  • 相关阅读:
    UGUI优化干货总结
    C#合成解析XML与JSON
    镜头跟随玩家移动
    Unity 5 Skybox 旋转
    多线程实现资源下载
    自定义配置文件的使用及加载-txt
    linux下mysql主从复制搭建
    常用模块-正则re
    Elasticsearch分布式搜索
    redis主从复制原理与优化-高可用
  • 原文地址:https://www.cnblogs.com/tranquil/p/3611116.html
Copyright © 2020-2023  润新知