今天在干坏事抓取别人页面时候遇到一个问题,平时我们在post数据后,大不了要求提交cookie,但是今天这个测试了N遍不需要coookie都行的,但是抓取到的始终是乱码,怎么解析都不行。于是自己又把cookie和一大堆header给加上,还是同样的问题,于是开始郁闷了。PHP脚本不行,但是同样的提交浏览器上面就行,这个是怎么回事呢?

于是开始分析能看到的数据,终于看到一个特别的地方,我们平时请求数据的时候都会在header里面看到一个

Coontent-Length: xxxx

这个是表示这次发送的数据的长度,说明是一个完整的http数据的发送,但是今天看到的这个却没有这一项,出现的却是

Transfer-Encodingchunked

于是开始郁闷了,这个到底是啥意思。谷歌了一番终于懂了,也找到对策了。

维基百科上面是这样解释的:

分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。

通常,HTTP应答消息中发送的数据是整个发送的,Content-Length消息头字段表示数据的长度。数据的长度很重要,因为客户端需要知道哪里是应答消息的结束,以及后续应答消息的开始。然而,使用分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。通常数据块的大小是一致的,但也不总是这种情况。

终于知道这个是啥了,那边把数据给分段了,怪不得数据一直有问题,于是网上到处找解决办法,终于找到一个很巧妙的方法:使用HTTP 1.0协议,服务器会主动放弃chunked编码,所以在curl里面加个

curl_setopt($curl, CURLOPT_HTTP_VERSION, '1.0');

问题就解决了,就是这么简单

java chunked 解码_模拟http请求 带 chunked解析办法一相关推荐

  1. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  2. java期末课程设计----模拟银行业务(带界面)

    java期末课程设计----模拟银行业务(带界面) 本项目包含存款,取款,查询,转账,修改密码等功能的银行管理系统的功能(不涉及数据库).大致流程图如下: 一.设计思路 本系统采用JAVA语言并在ec ...

  3. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...

    本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...

  4. java http 用户名密码_Web后端语言模拟http请求(带用户名和密码)实例代码大全

    标签: RESTful API是目前比较成熟的一套互联网应用程序的API设计理论.而随着RESTful API的成熟和流行,应用开发方面就需要以模拟http请求的方式来调用RESTful API接口: ...

  5. Web后端语言模拟http请求 带用户名和密码 实例代码大全

    RESTful API是目前比较成熟的一套互联网应用程序的API设计理论.而随着RESTful API的成熟和流行,应用开发方面就需要以模拟http请求的方式来调用RESTful API接口:经过一段 ...

  6. Web后端语言模拟http请求(带用户名和密码)实例代码大全

    RESTful API是目前比较成熟的一套互联网应用程序的API设计理论.而随着RESTful API的成熟和流行,应用开发方面就需要以模拟http请求的方式来调用RESTful API接口:经过一段 ...

  7. java http 流_java 模拟http请求,通过流(stream)的方式,发送json数据和文件

    发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ...

  8. java 编码解码_深入解析Java中的编码转换以及编码和解码操作

    一.Java编码转换过程 我们总是用一个java类文件和用户进行最直接的交互(输入.输出),这些交互内容包含的文字可能会包含中文.无论这些java类是与数据库交互,还是与前端页面交互,他们的生命周期总 ...

  9. 计算器程序java开方运算_模拟计算器java程序

    1 /*实现基本数学运算.函数等功能:加.减.乘.除.阶乘.正弦.余弦和指数运算.2 界面将模拟Windows中的计算器程序.*/ 3 import javax.swing.*;4 import ja ...

最新文章

  1. 《LeetCode力扣练习》第160题 相交链表 Java
  2. Nginx的目录结构分析
  3. LVS:三种负载均衡方式比较
  4. EF Core中高效批量删除、更新数据的Zack.EFCore.Batch发布三个新特性
  5. MTK 驱动(83)---mtklog相关知识
  6. 怎样实现linux的网络通信协议是,一种基于Linux系统的TCP/IP协议栈的实现
  7. linux 快组描述符,Linux 进程描述符 task struct
  8. .net中实现文件下载的几种方法(收藏)
  9. 2022年考研数据结构_5 树
  10. 圣诞节即将到来让你的Mac屏幕下雪只需一招轻松解决
  11. flowable 中的互斥网关、并行网关、兼容网关、事件网关
  12. 平昌县网上书城系统设计与实现
  13. oppoa79支持手机html,oppo a79驱动
  14. linux网盘客户端,Linux下的百度网盘客户端BaiduPCS-Go
  15. provisional headers are shown
  16. 保险与赌博的差异,航延险是赌博吗?
  17. 计算机对操作系统函数的调用失败,win8系统电脑弹出提示“远程过程调用失败且未执行”的修复方法...
  18. DL2 - Improving Deep Neural Networks- Hyperparameter tuning, Regularization and Optimization
  19. 基于人脸识别的商业大数据1
  20. EAST托卡马克上光纤电流传感器的研制与实验应用笔记1

热门文章

  1. EfficientNet 测试
  2. 可自动关闭的alert方法
  3. pytorch mseloss bceloss 对比
  4. flask管理不同的路由
  5. FILLED is not a menber of 'cv' in opencv2.4.9
  6. 为CentOS 7安装VMware-tools
  7. 联想拯救者15isk装win10系统_笔记本电脑触摸板操作手势合集以拯救者Win10系统为例...
  8. .net里鼠标选中的text数据怎么获取_怎么利用Excel设置当天生日提醒功能
  9. 菜鸟驿站是什么快递_95后女生在横店开菜鸟驿站,每天帮大明星和小龙套收快递...
  10. Java基础之Hibernate