Postman测试http请求返回415状态码的解决

1 篇文章 0 订阅
1 篇文章 0 订阅

首先记录一下返回结果

<!doctype html>
<html lang="en">
<head><title>HTTP Status 415 – Unsupported Media Type</title>
<style type="text/css">
H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} 
H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} 
BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 
B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} 
P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}
A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}
</style>
</head>
<body>
<h1>HTTP Status 415 – Unsupported Media Type</h1>
<hr class="line" /><p><b>Type</b> Status Report</p>
<p><b>Message</b> Unsupported Media Type</p>
<p><b>Description</b> The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.</p>
<hr class="line" />
<h3>Apache Tomcat/8.0.53</h3>
</body></html>

postman参数如下图

 使用https请求并携带一组formData向eclipse后台请求数据,结果返回状态码415

415状态码Unsupported Media Type服务器无法处理请求附带的媒体格式

处理该请求的源码是:

@POST
	@Path("calc")
	@Produces(MediaType.APPLICATION_JSON)
	@Consumes({MediaType.APPLICATION_XHTML_XML,MediaType.APPLICATION_XML/*,MediaType.APPLICATION_FORM_URLENCODED*/})
	public String getCalculationResult(@FormParam("num1") String num1, @FormParam("num2")String num2){
		Result r = new Result().success();
		r.setData(NumberUtils.toInt(num1)+NumberUtils.toInt(num2));
		return r.toString();
	}

执行该方法时的日志记录

八月 29, 2018 2:47:19 下午 org.glassfish.jersey.filter.LoggingFilter log
信息: 1 * LoggingFilter - Request received on thread http-nio-443-exec-13
1 > POST https://localhost/master/rest/jersey/calc
1 > content-type: application/x-www-form-urlencoded
1 > cache-control: no-cache
1 > postman-token: 43615349-7d54-45e5-962b-8ed59e3be45d
1 > user-agent: PostmanRuntime/7.1.1
1 > accept: */*
1 > host: localhost
1 > cookie: JSESSIONID=0AD7194FDD008D9919CF1B3B4E15F09C
1 > accept-encoding: gzip, deflate
1 > content-length: 14
1 > connection: keep-alive

八月 29, 2018 2:47:19 下午 org.glassfish.jersey.filter.LoggingFilter log
信息: 1 * LoggingFilter - Response received on thread http-nio-443-exec-13
1 < 415

可以看到,该条请求的 content-type: application/x-www-form-urlencoded,@Consumes的参数列表中没有此种类型的变量,即表示该资源不接受此种content-type的请求。(使用的RESTful 风格的jersey框架),增加这种请求媒体类型的支持即可,即去掉源码上@Consumes的标签注释即可解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: HTTP/HTTPS协议中,415错误状态码表示不支持的媒体类型。在向服务器发起POST请求时,需要在请求头中明确指定Content-Type字段,以告知服务器请求体的格式类型。如果请求体格式与预期不符,服务器将返回415错误状态码。 造成415错误状态码的原因可能有以下几种情况: 1.请求头中的Content-Type字段值不正确或者缺失。服务器无法识别请求体的格式类型,所以无法处理该请求,返回错误状态码。 2.请求体格式与Content-Type指定的格式类型不一致。请求头中Content-Type字段指定了请求体的格式类型,而请求体格式和Content-Type指定的格式类型不一致,导致服务器无法正确解析请求体,返回错误状态码。 3.请求体中包含的数据错误。如果请求体中包含的数据格式不规范或者不符合服务器的要求,则服务器无法处理该请求,返回错误状态码解决这些问题的方法为: 1.确保请求头中的Content-Type字段值正确,指定了请求体的格式类型。 2.检查请求体格式是否与Content-Type指定的格式类型一致。 3.确认请求体中的数据格式规范,并符合服务器的要求。 可以使用网络调试工具(如Postman、Fiddler等)来进行相关测试,并对请求头和请求体进行相关调整,以确保请求能够被正确处理。 ### 回答2: HTTP状态码是在网页请求和响应过程中,Web服务器告知客户端的状态标识。其中,415状态码代表请求格式不被服务器支持。也就是客户端发送了一个格式错误的请求,但是Web服务器不能处理这样的请求。 一般而言,在HTTP/HTTPS POST请求时,传递的数据都是经过编码后才能被发送到服务器的。如果客户端发送的编码格式与服务器无法处理的格式不符合,那么服务器就会返回415状态码,告诉客户端请求无法被处理。以下是几种常见的引起415错误状态码的原因: 1. 传递的编码格式不正确。例如,客户端使用xml格式传递数据,而服务器只支持json格式。 2. 传递的编码格式过期或已被废弃。例如,客户端使用text/xml传递数据,而服务器只支持application/xml。 3. 传递的请求头不正确。例如,客户端没有指定Content-Type头,或者指定的头与实际传递的数据格式不符合。 如何解决415错误状态码呢? 1. 确认请求的Content-Type与服务器支持的格式一致。 2. 确认请求头中的Content-Type正确。 3. 通过修改客户端的请求格式或者升级服务器的处理能力,使其支持客户端发送的请求格式。 总之,出现415错误状态码时,需要仔细分析错误的原因,并采取相应的解决方案。只有确保请求格式正确、协议支持一致,才能避免这种错误的出现。 ### 回答3: 对于出现http/https post请求返回415错误状态码问题,这是由于客户端请求发送的实体类型与服务器所支持的实体类型不一致所导致的。下面我们来详细分析该错误状态码的原因和解决方法: 1. 原因: 客户端请求发送的实体类型不受服务器支持,一般原因如下: (1) Content-Type请求头的值不正确:客户端要向服务器提交数据时,需要指定请求头 Content-Type,但是请求头中指定的 Content-Type 值不正确,与服务器支持的实体类型不一致,导致服务器无法解析客户端提交的数据。 (2) 服务器未能识别请求的方法或内容:在使用服务器提供的API时,如果请求的方法或请求的内容格式不正确,就会产生 415 错误码。 2. 解决办法: 要解决该问题,需要从以下几个方面入手: (1) 检查请求头 Content-Type 值:客户端需要确保请求头中的 Content-Type 值与服务器支持的实体类型一致,例如,如果要提交的是一个 XML 数据,那么在请求头 Content-Type 中设置 application/xml。 (2) 检查提交的数据格式: 一般的解决方法是检查提交的数据格式是否正确,如果格式正确,那么很可能是 Content-Type 值不正确,需要修改 Content-Type 值;如果提交的数据格式不正确,则需要修改数据格式。 (3) 检查请求方法:处理请求时,服务器会根据HTTP请求头信息来判断请求方式,因此应该检查提交的数据格式是否与请求方式相匹配。 总之,如果出现 http/https post请求返回 415 错误状态码,我们可以先检查请求头 Content-Type 值和请求方法是否正确,以解决该问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值