libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误 以及每次抓取网页长度不一致问题
来源:互联网 发布:nginx 跳转 url不变 编辑:程序博客网 时间:2024/06/05 17:10
使用libCURL时调用curl_easy_perform返回的CURLcode为23错误。
查看得知是CURLE_WRITE_ERROR,写文件错误。
估计是使用curl_easy_setopt时设置CURLOPT_WRITEFUNCTION或者CURLWRITEDATA时有问题,结果找了半天也没有发现。
最后发现是够早的WRITEFUNC有问题:
错误:
size_t function(const void *ptr, size_t size, size_t nmemb, const void *stream)
{
… … … …
fwrite(ptr, size, nmemb, (FILE *)stream);
… … … …
return 0;
}
返回值出错,正确的返回值应该是文件写入的大小
return size * nmemb;
否则就会报上面的错误。
正确函数:
size_t function(const void *ptr, size_t size, size_t nmemb, const void *stream)
{
int ret;
… … … …
ret = fwrite(ptr, size, nmemb, (FILE *)stream);
… … … …
return ret;
}
这样,在fwrite正确执行时,就不会报错了。
============================================================
============================================================
//headers = curl_slist_append(headers, "Accept-Encoding: gzip, deflate");
问题找出来了,原来网页是被压缩了,把图中的语句注释掉,服务器就不会返回压缩过的网页。这样每次获取的网页内容都是正常的了。之前也想过是不是网页请求头部出问题了,只是改过的地方不对,关键是自己对这些字段信息的设置也不懂。现在我要好好去学习一下
0 0
- libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误 以及每次抓取网页长度不一致问题
- libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误
- CURL抓取网页时出现的问题
- urllib2抓取网页出现中文编码问题
- CURLE_WRITE_ERROR
- libcurl抓取网页并保存cookie
- C# HttWebRequest 网页数据抓取是出现的错误情况
- 网页抓取出现乱码
- 使用libcurl库在手机上出现CURL_WRITE_ERROR(23)错误
- libcurl保存网页内容以及图片
- java网页抓取问题
- libcurl 使用说明和网页抓取 linux下的curl编程
- mac 上 pycurl与libcurl版本依赖不一致问题修改
- 绑定变量值长度不一致,mismatch问题
- Java网页抓取错误总结
- 每次发起的request获取的sessionid不一致问题
- 解决JAVA字符串长度与数据库字符串长度不一致问题
- 文本长度与字符长度不一致的问题
- SQL truncate 、delete与drop区别
- js防止表单重复提交
- UIBarButtonSystemItemFixedSpace
- 在Vim中使用ctags
- c++序列化库cereal使用介绍
- libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误 以及每次抓取网页长度不一致问题
- 怎么查看Navicat Premium 中的日志文件
- android音乐播放器Media
- 数据字典的范例
- iOS时间类型转换和各种数据类型进行转换
- Android多线程-------同步辅助类
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- Java Web 使用getPart()、getParts()上传文件
- MFC绘图窗口闪烁解决方法or内存DC