HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。

 

协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。

但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。

postmanes库按时间升序查询 postman date_上传文件

 

postmanes库按时间升序查询 postman date_上传_02

 

postmanes库按时间升序查询 postman date_键值对_03

 

 

postman—post方式几种请求参数区别

postman中 form-data、x-www-form-urlencoded、raw、binary的区别

版权声明参考:

1、form-data: 

    就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;

由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

postmanes库按时间升序查询 postman date_键值对_04

postmanes库按时间升序查询 postman date_键值对_05

2、x-www-form-urlencoded

     就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如,name=java&age = 23

postmanes库按时间升序查询 postman date_键值对_06

postmanes库按时间升序查询 postman date_上传_07

3、raw

  可以上传任意格式的文本,可以上传text、json、xml、html等

postmanes库按时间升序查询 postman date_post_08

postmanes库按时间升序查询 postman date_post_09

4、binary

   相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

 multipart/form-data与x-www-form-urlencoded区别:

multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
               x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

 

1. POSTMAN测试POST请求报错

{
  "timestamp": "2019-08-29T10:09:26.002+0000",
  "status": 415,
  "error": "Unsupported Media Type",
  "message": "Content type 'text/plain;charset=UTF-8' not supported",
  "path": "/top/targetRegion"
}

错误码:415表示不支持内容类型。

我没有直接在URL里传参数,而是使用body传参,如果使用Body传参的话,就需要在设置Headers。错误原因是没有正确设置内容类型标头。

我的请求参数是:

postmanes库按时间升序查询 postman date_键值对_10


需要在Headers里添加如下配置:

postmanes库按时间升序查询 postman date_键值对_11

2. 使用HttpClient调用Restful接口报错

{"timestamp":"2019-08-29T10:19:03.019+0000","status":415,"error":"Unsupported Media Type","message":"Content type 'text/plain;charset=UTF-8' not supported","path":"/---"}

错误原因同1。需要设置内容类型标头。

HttpPost post = new HttpPost(URL);
		post.addHeader("Content-Type","application/json"); //设置Headers
        post.setEntity(new StringEntity(jsonString,"UTF-8"));//设置Body(请求参数)