zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdoj 1010-Tempter of the Bone
    leetcode 91. 解码方法
    leetcode 925. 长按键入
    leetcode 437. 路径总和 III
    leetcode 892. 三维形体的表面积
    二分查找
    HBASE 安装
    Linux 日常指令
    Linux Centos7 配置代理
    Linux ssh 免密
  • 原文地址:https://www.cnblogs.com/tranquil/p/3611116.html
Copyright © 2011-2022 走看看