文档章节

HTTP内容类型 Content-Type

six_sun
 six_sun
发布于 2017/09/06 22:49
字数 754
阅读 4
收藏 0
点赞 0
评论 0

 htttp 错误代码   415 –不支持的媒体类型。 一般在客户端使用了服务端不支持的Content-Type后出现

 Content-Type 用于 定义网络文件的类型和网页的编码

 

 在spring MVC中通过使用 @RequestBody 注解启用 spring自带的报文解析逻辑   

HttpMessageConveter 接口 提供了对应的数据转换功能

接口中存在的方法如下: 

boolean canRead(Class<?> clazz, MediaType mediaType);
boolean canWrite(Class<?> clazz, MediaType mediaType);
List<MediaType> getSupportedMediaTypes();
T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
            throws IOException, HttpMessageNotReadableException;
void write(T t, MediaType contentType, HttpOutputMessage outputMessage)
            throws IOException, HttpMessageNotWritableException;

通过调用实现类中,  getSupportedMediaTypes() 方法, 获取支持的 MediaType列表 

MediaType对象中初始化了支持的报文和类型列表.

 

在抽象类 AbstractHttpMessageConverter 中调用 canRead canWrite 方法判断请求头Content-Type是否包括在所启动服务支持的媒介类型中

spring 针对不同的请求类型.  3.x 和4.x中有不同的实现. 4.x对 jackson进行了增强,并且新增了对Gson的支持 所以会出现 3.x和4.x在对报文转换配置类中有所不同. 

MappingJacksonHttpMessageConverter 例如使用了 jsckson1.x 在3.x中使用

MappingJackson2HttpMessageConverter  使用了 jsckson2.x 在4.x中使用

 

可以在

    <mvc:annotation-driven>  
        <mvc:message-converters>  
            <ref bean="stringHttpMessageConverter" />  
            <ref bean="fastJsonHttpMessageConverter" />  
            <ref bean="marshallingHttpMessageConverter" />  
        </mvc:message-converters>  
    </mvc:annotation-driven> 

中进行配置

或者手动注入具体的 bean.  

	<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
				<value>application/json;charset=utf-8</value>
			</list>
		</property>
	</bean>	

 

 常见的媒体格式类型如下:

  •     text/html : HTML格式
  •     text/plain :纯文本格式      
  •     text/xml :  XML格式
  •     image/gif :gif图片格式    
  •     image/jpeg :jpg图片格式 
  •     image/png:png图片格式

   以application开头的媒体格式类型:

  •    application/xhtml+xml :XHTML格式
  •    application/xml     : XML数据格式
  •    application/atom+xml  :Atom XML聚合格式    
  •    application/json    : JSON数据格式
  •    application/pdf       :pdf格式  
  •    application/msword  : Word文档格式
  •    application/octet-stream : 二进制流数据(如常见的文件下载)
  •    application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

   另外一种常见的媒体格式是上传文件之时使用的:

  •     multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

 

针对请求服务端请求415的情况 在客户端使用 服务端已经支持的 content-Type列表中的类型即可解决.  

如果服务端没有支持该类型, 常见排查方式的例如 :

查看服务端是否拥有对该类协议的依赖包 , 是否启用 spring对解析方式的依赖或者在 

mvc:annotation-driven中指定第三方对spring的依赖包 如: 阿里的 fastjson

如果一切正常, 415错误会变成400 或者一步到位直接  200 

对于400错误. 是指客户端发送的请求报文解析后不满足服务端的格式, 对照requestBody类型,与请求报文格式.

over

 

 

 

后记:  写的好蠢, MDZZ !  

 

© 著作权归作者所有

共有 人打赏支持
six_sun
粉丝 0
博文 4
码字总数 29456
作品 0
昌平
程序员
webkit 常见问题汇总

前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这...

东辉在线 ⋅ 2015/04/15 ⋅ 2

thinkphp http扩展下载方法问题

在用 thinkphp 做了一个文件下载的小程序,遇到一个问题,现在下载 txt,bat,exe类型文件(我只测试了这三种类型的文件),浏览器都是直接显示里面的内容了,而不是出现下载,下载方法代码如下...

开源中国总理 ⋅ 2012/09/22 ⋅ 2

play2.0文档-面向java开发者(3)

Manipulating the response 处理应答 Changing the default Content-Type 改变默认内容类型 The result content type is automatically inferred from the Java value you specify as body.......

老盖 ⋅ 2012/04/09 ⋅ 0

spring框架 Request请求 content-Type设置和配置

1. Content-Type MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。 常见的媒体格式类型如下:...

ybyron ⋅ 2017/08/16 ⋅ 0

play2.0文档-面向java开发者(5)

Body parsers Body解析器 What is a body parser? body解析器是啥? An HTTP request (at least for those using the POST and PUT operations) contains a body. This body can be formatt......

老盖 ⋅ 2012/04/10 ⋅ 0

selenium2-python17-下载文件

webdriver 允许我们设置默认的文件下载路径。也就是说文件会自动下载并且存在设置的那个目录 中。 要想下载文件,首选要先确定你所要下载的文件的类型。要识别自动文件的下载类型可以使用 cu...

丰_申 ⋅ 2016/02/08 ⋅ 0

什么是MIME type!

一、 在浏览器中可以显示的内容有 HTML、 XML、 GIF、 Flash ……那么,浏览器是如何区分它们,决定这些内容用什么形式来显示呢?答案是 MIME Type,也就是该内容(或资源)的媒体类型。 媒体类...

这些年了1990 ⋅ 2015/06/01 ⋅ 0

邮件的组织结构

MIME消息的头字段 Content-Type Content-Type字段中的内容以“主类型/子类型”的形式出现,主类型有text、image、audio、video、application、multipart、message等,分别表示文本、图片、音...

第五郎 ⋅ 2014/08/28 ⋅ 0

HTTP读书笔记(六)

第九章 HTTP编码 1.HTTP要确保它所承载的”货物”,可以被正确识别提取,必须要满足:通过Content-Type首部说明媒体格式,Content-Language首部说明语言。通过Content-Length首部和Content-E...

年少爱追梦 ⋅ 2016/02/24 ⋅ 0

MIME邮件格式分析及信息提取

摘 要 MIME是目前互联网邮件普遍采用的格式标准,本文通过对MIME邮件格式规范的分析和说明,给出了从邮件中提取其所含各种信息的基本方法。 关键词 MIME、邮件、格式、信息提取 MIME,英文全...

囧南风囧 ⋅ 2010/10/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部