无论是前端,还是后端开发,HTTP 接口的使用率实在是太高了。开发好了特定的 HTTP 接口,没有一个好的测试工具,怎么可以呢?

而 Postman 就是一款好用的爱不释手的测试工具,谁用谁说爽。

接口说明

已开发好 /woms/api/UpEvent.php 的 HTTP 接口。该接口完成 JSON 消息上报及若干图片文件上传的任务。主要通过 HTTP 的 multipart/form-data 格式推送数据到服务器。该格式详细定义可见  RFC1867

Postman 登场

Postman 是 Chrome 的插件,但我觉得 PC 版更好,我选择 PC 版本!Postman-win64-7.7.3-Setup.exe

安装好之后,初次打开,需要注册账号,按照提示,输入账号,设置密码,然后就可以注册成功。登录进入主界面后。第一眼,就看着特别舒服。

Postman 调试 HTTP 接口

主要有3点:

  • 输入测试接口

    点击 Create a request, 输入 http 测试接口

  • 按照接口方法构造测试数据

    根据 Multipart/form-data 有几部分内容,就输入 几个键名称 和 值内容, 截图见下!

  • 查看输出,验证结果

    Postman 调试截图如下:

注意:上图我用红色小圈括起来的部分,这里一定不可以选错。

抓包截图如下:

抓包看: 共发送了6段数据,第一段是 Json,其余的都是 jpeg 的图片。其实这里的第一段 Json 数据就是对5张图片数据的描述。

HTTP multipart/form-data 补充

multipart/form-data 主要是将多条表单的数据处理为一条消息,发送到服务器。

多条消息之间用分隔符分开。分隔符用 boundary=xxxxxx 来定义,xxxxx就是分隔符。

这样一个 HTTP 请求,由于有 boundary 隔离,既可以上传文本消息的同时,也可以上传文件。当上传的字段是文件时,可用 Content-Type 标明文件类型;

消息实例的具体文本如下:其中图片数据特别多(乱码部分),我特意删除后贴出来:

 POST /woms/api/UpEvent.php HTTP/1.1
Content-Type: multipart/form-data; boundary=----
User-Agent: PostmanRuntime/7.17.
Accept: */*
Cache-Control: no-cache
Postman-Token: 552bb4b0-ddbe-4e10-b5b1-dd16ce6afe82
Host: 192.168.100.146
Accept-Encoding: gzip, deflate
Content-Length: 661588
Connection: keep-alive ----4235013262151947840
Content-Disposition: form-data; name="info"
Content-Type: application/json {"AuthUser":"13800001111",
"AuthPasswd ":"123456",
"Timestamp":"1568743234",
"EventTime":"1568743234",
"EventType":1,
"EventLevel":2,
"EventSubject":"Test",
"EventDesc":"Test",
"Longitude":"33.44",
"Latitude": "116.43",
"AccpetUser": "18200129832",
"FileList": [{
"FileName": "haha.jpg",
"FileSize": 83},
{"FileName": "haha.txt",
" FileSize": 16}]
}
----4235013262151947840
Content-Disposition: form-data; name="file1"; filename="haha.jpg"
Content-Type: image/jpeg ???àJFIF??C
$.' ",#(7),01444'9=82<.342??C
----4235013262151947840
Content-Disposition: form-data; name="file2"; filename="6.jpeg"
Content-Type: image/jpeg ???á
ExifII*4M¤?(1"′2?iì$ü
?áT?a1??ù
----4235013262151947840
Content-Disposition: form-data; name="file3"; filename="7.jpeg"
Content-Type: image/jpeg ?s??:?ó?μ???üo6??é_?o????~áczóê??A????&???#áè?????áè??ù
----4235013262151947840
Content-Disposition: form-data; name="file4"; filename="8.jpeg"
Content-Type: image/jpeg ?y??ü·á??ù
----4235013262151947840
Content-Disposition: form-data; name="file5"; filename="9.jpeg"
Content-Type: image/jpeg ???á7%ExifMM*44¤?(1"′2?iì$
?}?.W§?N/éy}'ü?%ì}′ù=±ú??S?g???Yoíùüê|t???ú??ù
----4235013262151947840--

Postman 之 HTTP Multipart/form-data 调试的更多相关文章

  1. html5 file upload and form data by ajax

    html5 file upload and form data by ajax 最近接了一个小活,在短时间内实现一个活动报名页面,其中遇到了文件上传. 我预期的效果是一次ajax post请求,然后在 ...

  2. Sending forms through JavaScript[form提交 form data]

    https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript As in the ...

  3. 【转】HTTP请求中的form data和request payload的区别

    jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的,比如用$.ajax方法发送请求时(data参数是一个JSON.stringify()处理后的字符串, ...

  4. [转]HTTP请求中的form data和request payload的区别

    本文转自:http://www.cnblogs.com/btgyoyo/p/6141480.html jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的 ...

  5. form data和request payload的区别

    HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...

  6. Web 前沿——HTML5 Form Data 对象的使用

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...

  7. HTTP请求中的form data和request payload的区别

    HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...

  8. [整理]Ajax Post请求下的Form Data和Request Payload

    Ajax Post请求下的Form Data和Request Payload 通常情况下,我们通过Post提交表单,以键值对的形式存储在请求体中.此时的reqeuest headers会有Conten ...

  9. AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

    转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...

  10. Sending HTML Form Data

    public Task<HttpResponseMessage> PostFormData(){ // Check if the request contains multipart/fo ...

随机推荐

  1. Java多线程之线程的生命周期

    Java多线程之线程的生命周期 一.前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(R ...

  2. k近邻法的实现

    k近邻法 模型 使用的模型实际上对应于特征空间的划分.模型的三个基本要素:1.距离度量 2. k值的选择 3. 分类决策规则决定. k值的选择:k值的选择,k如果选择的过小会导致过拟合,模型会变得复杂 ...

  3. hdu-6579 Operation

    题目链接 Operation Problem Description There is an integer sequence a of length n and there are two kind ...

  4. poj 2115 求线性同余方程 C Looooops(好理解欧几里德扩展定理怎么应用)

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29061   Accepted: 8360 Descr ...

  5. Hexo博客Next v7.X 主题升级,美化警示录

    本文转载于:Hexo博客Next v7.X 主题升级,美化警示录丨奥怪的小栈 前言 经历了好几天(懒癌晚期懒得数了)的与主题升级斗争后,我终于完成基本上完成了next主题的升级!升到了V7.3!哈哈哈 ...

  6. 快速构建第一个Flink工程

    本文简述通过maven和gradle快速构建的Flink工程.建议安装好Flink以后构建自己的Flink项目,安装与示例运行请查看:Flink快速入门--安装与示例运行. 在安装好Flink以后,只 ...

  7. python读取大文件只能读取部分的问题

    最近准备重新研究一下推荐系统的东西,用到的数据集是Audioscrobbler音乐数据集.我用python处理数据集中artist_data.txt这个文件的时候,先读取每一行然后进行处理: with ...

  8. 洛谷 P1059【明明的随机数】 题解

    事实上,完全可以先将输入进来带有重复的元素们保存进一个数组并对该数组进行排序,再将该数组的各个元素逐个判断是否与前一元素相同(重复与否的判断),将不重复的元素转移至另一个数组,与此同时进行对不重复元素 ...

  9. fastjson使用-- @JSONField使用(转)

    @JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上. 我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会 ...

  10. Filter过滤器学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...