美文网首页
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问题

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