补充一下:

application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。

通过抓包获取以下数据。根据这些数据和数据的格式,可以对网络编程的理解和网络请求框架的使用进行更加深刻的理解。



Post表单形式上传文件:(同时上传两个文件,每个文件对应一部分)

请求: //注意每一行的细节“–”、“换行”、“boundary的值”

POST http://125.216.242.147:8080/yjy/file/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=da185eb8-c4f3-47af-82b9-92c031a9bb09
Content-Length: 729
Host: 125.216.242.147:8080 //目标地址
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.3.1

–da185eb8-c4f3-47af-82b9-92c031a9bb09 //开始设置参数:levelId=2
Content-Disposition: form-data; name=”levelId”//参数key:levelId
Content-Length: 1 //参数value的长度

2 //参数value:2
–da185eb8-c4f3-47af-82b9-92c031a9bb09 //开始设置参数:userId=402875……
Content-Disposition: form-data; name=”userId”
Content-Length: 32

40287581551beea001551bf5f29b0000
–da185eb8-c4f3-47af-82b9-92c031a9bb09 //添加文件、文件名、文件内容
Content-Disposition: form-data; name=”file”; filename=”test.txt” //注意:name 和filename 值的意义
Content-Type: text/plain //MIME类型:
Content-Length: 61 //文件的长度

01268845855584585586935888 //文件具体的内容……
this is my words
fhfh……

–da185eb8-c4f3-47af-82b9-92c031a9bb09
Content-Disposition: form-data; name=”file”; filename=”test2.txt”
Content-Type: text/plain
Content-Length: 58

01268845855584585586935888
this is my words
fghfhf
test2……

–da185eb8-c4f3-47af-82b9-92c031a9bb09– //注意最后还有个“ – ”,表示全部结束

响应:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 566
Date: Fri, 19 Aug 2016 07:26:23 GMT

{“result”:true,”document”:{“docId”:”297ed60b56a159b70156a1b18ecc0003”,”originalName”:”test.txt”,”saveName”:”201608191526413400.txt”,”savePath”:”D:\image\201608191526413400.txt”,”downPath”:”http://125.216.242.147:8080/attachment/201608191526413400.txt“,”type”:”“,”publishStatus”:0,”needPay”:0,”money”:0,”docSize”:61,”uploadTime”:1471591583426,”user”:{“userId”:”40287581551beea001551bf5f29b0000”,”username”:null,”password”:null,”realName”:null,”avator”:null,”money”:0,”role”:null,”level”:null},”level”:{“levelId”:”2”,”levelName”:null,”levelDesc”:null,”users”:null}}}



将文件作为请求体,发送到服务器:

请求:

POST http://125.216.242.147:8080/yjy/file/upload HTTP/1.1
Content-Type: application/octet-stream
Content-Length: 61
Host: 125.216.242.147:8080
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.3.1

01268845855584585586935888
this is my words…… //文件具体内容

响应:

HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 4445
Date: Fri, 19 Aug 2016 07:28:32 GMT
Connection: close

<html><head><title>Apache Tomcat/7.0.54 - Erro…(省略)


Post传递参数

请求:
POST http://125.216.242.147:8080/yjy/file/list HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 55
Host: 125.216.242.147:8080
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.3.1

levelId=2&uploadUserId=40287581551beea001551bf5f29b0000 //参数的key和value,多个参数用“&”连接

响应:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 13736
Date: Sat, 20 Aug 2016 02:42:04 GMT

{“result”:true,”total”:24,”documents”:[{“docId”:”297ed60b5654a206015654d6f8560016”,”originalName”:”……}
//具体的Json串



下载文件时的接收到的报文格式:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/”61-1471675934041”
Last-Modified: Sat, 20 Aug 2016 06:52:14 GMT
Content-Type: text/plain(注:txt)
(注:word:Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document)
Content-Length: 61 //报文数据部分的长度,可以用来表示“所下载文件的大小”
Date: Tue, 06 Sep 2016 03:33:27 GMT

01268845855584585586935888
this is my words
……


HTTP请求包文格式相关推荐

  1. FPGA实战-以太网包文

    为什么要学包文? 1.FPGA最大的应用领域是通信 2.以太网领域通常将数据封装成包文格式 3.处理的基本单元 以太网包文的最简单格式 包文的接口表示有哪些 data :传输的数据信号: vld   ...

  2. FIFO加包文,切割包文

    一.模块没收到一个包文时,先发送一个开始包文,再发送数据包文,最后发送结束包文. 输入的包文是32bit,而输出的包文格式要求为8bit 开始包文格式如下: 8'h55 8''h55 8'h55 8' ...

  3. 利用状态机实现简易包文类型识别器

    数据包文格式分为数据包文和控制包文格式 //第一段 always @(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginstate_c< ...

  4. HTTP 请求包/回复包格式数据分析

    GET /cgi-bin/user/qzone_cgi_msg_getcnt2?uin=1020578379bm=08409c0002008001&v=1&g_tk=158987147 ...

  5. 挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持

    今天分享的这篇Writeup为作者通过利用目标网站"忘记密码"功能,在重置密码请求发包中添加X-Forwarded-Host主机信息,欺骗目标网站把重置密码的链接导向到自己的服务器 ...

  6. UDP数据包协议格式详解

    源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号 报文长度(单位4byte):表示udp报头+udp数据总长度,有别于tcp,也没有选项 UDP报 ...

  7. COAP数据包协议格式详解

    Ver:版本编号,占2bit,固定01 T:报文类型,占2bit,CON=00,NON=01,ACK=10,RST=11 CON--需要被确认的请求,如果CON请求被发送,那么对方必须做出响应. NO ...

  8. Pcap 数据包捕获格式详解

    Pcap 是 Packet Capture 的英文缩写,是一种行业标准的网络数据包捕获格式.如果你是网络开发人员,那么通常会使用 Wireshark.Tcpdump 或 WinDump 等网络分析器捕 ...

  9. TCP数据包协议格式详解

    出一个专栏把通信协议搞一下吧,万物互联的根本呀. IP 版本4位:4(二进制0100)表示IPv4,6(二进制0110)表示IPv6 报头长度(单位4byte):因为选项长度不确定,取值范围是5-15 ...

最新文章

  1. Ubuntu系统添加root用户
  2. sklearn 随机分割数据_sklearn.ensemble.RandomForestClassifier 随机深林参数详解
  3. 活动分享|今晚启明云端与您相约立创直播间,红包\彩屏开发板送不停!
  4. Alpha冲刺博客集
  5. ldap的shema
  6. java之通过FileChannel实现文件复制
  7. Linux Crontab 任务管理工具命令以及示例
  8. java 最少使用(lru)置换算法_「Redis源码分析」Redis中的LRU算法实现
  9. 前端走向后台,node.js基本
  10. hnu小学期实训之数圈
  11. 使用代理服务器来连接到internet_代理服务器是什么,有什么作用?
  12. html中页面跳转以及传值的处理
  13. Tracepro中up vector和normal vector的定义1
  14. 怎样找一张图片的原图、出处?最全搜图网站+具体案例分享
  15. hihocoder 1403 后缀数组一·重复旋律 (后缀数组 + 二分)
  16. 网站域名备案流程是什么样的?
  17. 大转盘抽奖活动的设计
  18. 随机生成姓名存入mysql_MYSQL随机生成姓名
  19. AndroidStudio(Idea) 快捷键错乱,insert键乱入,复制粘贴查找快捷键无效
  20. 电脑硬盘怎样合并分区?

热门文章

  1. GP2Y1014AU粉尘传感器模块 PM2.5灰尘传感器代替GP2Y1010AU0F
  2. 流量卡如何激活使用?关于流量卡的激活与充值问题
  3. SAS 学习笔记(七)— SAS与回归分析
  4. 你最珍贵我最爱你用计算机咋弹,你最珍贵我最爱(Radio Edit)
  5. python旅游景点推荐系统
  6. 设计艺术签名的软件有哪些?不妨试试这几款应用
  7. wampserver简单配置
  8. 支付宝扫码支付,回调和退款(沙箱环境配置和完整代码)
  9. NPM酷库040:jschardet,识别数据编码
  10. Python做全国房价分析——经纬度的转换