1、Content-Type的定义

Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。

在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。

http协议是建立在tcp/ip协议之上的应用层协议,主要包括三个部分,状态行,头部信息,消息主体。对应一个http请求就是:请求行,请求头,请求体。协议规定post提交的数据,必须包含在消息主体中entity-body中,但是协议并没有规定数据使用什么编码方式。开发者可以自己决定消息主体的格式。数据发送出去后,需要接收的服务端解析成功,一般服务端会根据content-type字段来获取参数是怎么编码的,然后对应去解码。

 

2、Content-Type的格式:

Content-Type:type/subtype ;parameter

type:主类型,任意的字符串,如text,如果是*号代表所有;
subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;
parameter:可选参数,如charset,boundary等。
例如:
Content-Type: text/html;
Content-Type: application/json;charset:utf-8;

Content-Type的种类繁多,具体可参考http://tool.oschina.net/commons

3、下面几种类型是很常用,需要记忆的:

application/x-www-form-urlencoded

这种类型用于当HTTP将请求参数用key1=val1&key2=val2的方式组织,key 和 val 都进行了 URL 转码,放到body中(如put方法,多用于表单的提交)。注意如果是中文或者特殊字符,会自动进行URL的转码。

  • 如请求参数:

  • 生成的HTTP请求报文:可以看见中文是乱码的,如果没有指定UTF-8输出,应该会进行转义。

application/json

JSON 是一种轻量级的数据格式,以“key-value”对的方式组织的数据。这个使用这个类型,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)

get请求下会将key-value解析出来,放到URL的参数里面。JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。

  • 请求消息

  • 生成的HTTP 请求报文

最新文章

  1. App.Config详解及读写操作
  2. Apache 网站301重定向
  3. 如何通过SecureCRTPortable.exe 软件远程连接某个计算机(或者虚拟机)中的某个数据库
  4. C#的图像处理方法--(作者:http://conner-wang.spaces.live.com转载)
  5. matlab注释使用,以及相应的注释快捷键
  6. [android]如何让TextView使用超链接
  7. Extjs学习笔记之九 数据模型(上)-extjs
  8. 0_Simple__cudaOpenMP
  9. 利用CSS3制作网页动画
  10. python开发遇到的坑(1)xpath解析ValueError: Unicode strings with encoding declaration are not supported
  11. leetcode 之 two sum (easy)c++
  12. java 中的 Comparable 和 Comparator 与 Iterable 和 Iterator
  13. redis前端启动和后台启动的区别
  14. Nginx插件之openresty反向代理和日志滚动配置案例
  15. Don't forget to Cherish
  16. VS2010部署相关
  17. MiZ702学习笔记11——如何使用vivado isim仿真
  18. Hibernate不能实时获取MySQL数据库的更新
  19. SQL语句还原数据库并移动文件到指定路径
  20. python之旅:面向对象的程序设计

热门文章

  1. 基于 Jepsen 来发现几个 Raft 实现中的一致性问题(2)
  2. Redis cluster集群配置教程
  3. python3(二十六)slots
  4. 【Selenium06篇】python+selenium实现Web自动化:日志处理
  5. PyCharm 项目打开窗口设置为当前还是新开一个怎么办?
  6. Git应用详解第八讲:Git标签、别名与Git gc
  7. Python中有许多HTTP客户端,但使用最广泛且最容易的是requests
  8. python在办公时能给我们带来什么?
  9. gdb 调试中No symbol “***” in current context解决方法
  10. Hugo博客搭建