美文网首页
libcurl遇到http的chunked问题

libcurl遇到http的chunked问题

作者: Peter520 | 来源:发表于2017-06-26 17:32 被阅读466次


在使用libcurl的时候,我采用的是http-parser.c进行数据解析,结果一直报chunked size不正确,于是开始了查问题的艰难旅程,原来服务器端采用的是Transfer-Encoding: chunked模式,这种模式是不返回content-length的,而我不知道为什么libcurl返回的数据包里没有包含chunked的开始和结束标志,这就导致http-parser解析失败,找到了问题,那就要想想解决办法了。

办法一:打算采用Connection:keep-alive的方法,结果发现这个是HTTP1.0的老办法,在HTTP1.1中已经不这么使用了,于是查找发现,libcurl在7.25.0之后提供了curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);这个方法,本想用这个试一下,结果发现,我的服务器版本是7.19.7,不能用,只得另觅方法。

办法二:也是在网上找到的答案,根据资料提示说,如果采用HTTP1.0和服务器通讯,那么服务器会放弃采用chunked的方式响应,抱着试一试的想法试了一下,curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);结果发现真的可行,最后也是采用这个办法。

办法三:使用curl_easy_setopt(curl, CURLOPT_HEADER,           0);设置这个参数后,libcurl不会返回header头,只返回body内容给用户,如果body内容是Json格式,那么就直接解析Json内容,不用解析Html内容了。

以上是查找问题的过程以及办法,希望对大家有所助益。

相关文章

  • libcurl遇到http的chunked问题

    在使用libcurl的时候,我采用的是http-parser.c进行数据解析,结果一直报chunked size不...

  • Ceph RGW: libcurl用法介绍

    libcurl使用 使用libcurl访问外部http时的一个基本流程: 解析Ceph中进行libcurl请求的实...

  • http chunked编码格式

    http的响应数据由下面2部分构成:响应头 + 数据部分数据部分的格式由响应头说明一般情况下,HTTP的响应头包含...

  • http chunked和Trailer

    一. 分块编码 分块编码传输应该是和持久连接配合使用的.因为如果不是持久连接的话那也不需要知道长度等信息了,只需要...

  • Libcurl 学习与使用

    http://ftxtool.org/category/libcurl/[http://ftxtool.org/c...

  • 基于libcurl下载文件

    Linux 上使用libcurl下载http文件。 需要安装libcur 编译:

  • kotlin chunked的问题

    最近同事反馈一个问题,kotlin的chunked使用方式有点出入。(来自kotlin1.2的旧版) 尝试另外一种...

  • webUploader大文件分片上传

    webUploader配置: 主要是开启chunked:true,其他配置见官网:http://fex.baidu...

  • chunked编码

    定义 分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传...

  • libcurl 使用 https 时切换 ip 遇到的问题

    1 问题由来 开发的产品使用到的某服务器后台接口,因为业务的特殊性,在常规的host访问失败时,需要前端再使用指定...

网友评论

      本文标题:libcurl遇到http的chunked问题

      本文链接:https://www.haomeiwen.com/subject/asvdcxtx.html