Java HTTP状态415-不支持文本HTML的媒体类型
我使用jersey创建了一个RESTFul web服务,它应该在POST请求中使用纯文本并生成html响应。我的web服务类如下所示:Java HTTP状态415-不支持文本HTML的媒体类型,java,rest,jersey,Java,Rest,Jersey,我使用jersey创建了一个RESTFul web服务,它应该在POST请求中使用纯文本并生成html响应。我的web服务类如下所示: @Path("/calservices") public class CalServices { @FormParam("num1") private String number1; @FormParam("num2") private String number2; @POST @Path("/cal")
@Path("/calservices")
public class CalServices {
@FormParam("num1")
private String number1;
@FormParam("num2")
private String number2;
@POST
@Path("/cal")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.TEXT_HTML)
public String result(CalServices cal){
int sum = Integer.parseInt(cal.number1)+Integer.parseInt(cal.number2);
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey ..Result is" +sum + "</body></h1>" + "</html> ";
}
}
@Path(“/calservices”)
公共服务{
@FormParam(“num1”)
私有字符串编号1;
@FormParam(“num2”)
私有字符串编号2;
@职位
@路径(“/cal”)
@生成(MediaType.TEXT\u PLAIN)
@使用(MediaType.TEXT\uHTML)
公共字符串结果(CalServices cal){
int sum=Integer.parseInt(cal.number1)+Integer.parseInt(cal.number2);
返回“+”+“Hello Jersey”+“
+“+”你好,泽西..结果是“+sum+”+”;
}
}
我的HTML表单如下所示
<body class="nav-md">
<div class="right_col">
<div class="container">
<div class="panel panel-primary" style="width: 50%;text-align: center;margin:15% " >
<div class="panel-heading">Addition</div>
<div class="panel-body">
<form action="rest/calservices/cal" method="post">
<div class="form-group row">
<div class="col-md-4">Number First</div>
<div class="col-md-4"><input type="text" class="form-control" name="num1"></div>
</div>
<br/>
<div class="form-group row">
<div class="col-md-4">Number Second</div>
<div class="col-md-4"><input type="text" class="form-control" name="num2"></div>
</div>
<br>
<div class="form-group row center">
<div class="col-md-4"><input type="submit" value="add" class="btn btn-primary"></div>
<div class="col-md-4"><input type="reset" value="reset" class="btn btn-warning"></div>
</div>
</form>
<a href="rest/calservices/message">Click Here</a>
</div>
</div>
</div>
</div>
</body>
附加
第一名
第二
我的web.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>com.vogella.jersey.first</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.my.services</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
com.vogela.jersey.first
泽西岛休息服务
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.my.services
1.
泽西岛休息服务
/休息/*
删除此方法参数CalServices cal
。使用@FormParam
s中的值并更改@Consumes(MediaType.TEXT\u HTML)
tp@Consumes(MediaType.APPLICATION\u FORM\u URLENCODED)
@peeskillet,当我使用method=“post”时,我从Web服务获得休息,但如果是“get”webservice抛出exception.GET将参数设置为@QueryParam
,而不是@FormParam
,因为没有正文。你应该把它们放在方法参数中,而不是类字段中。谢谢@peeskillet,现在webservices在get和post两种情况下都可以正常工作了。