【发布时间】:2016-07-11 16:37:58
【问题描述】:
我正在传递 JSON 数据,例如
{
"empname" : "seo"
}
到 POST 网址,但它返回 415 错误,即 不支持的媒体类型
排除故障后,我发现 content-type 应该是 "application/json" 在海报扩展中,我尝试了相同的方法但没有成功。
以下是我的服务代码
package webService;
import java.sql.Connection;
import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.google.gson.Gson;
import dao.Database;
import dao.Project;
import dto.FeedObjects;
import model.ProjectManager;
@Path("/WebService")
public class FeedService
{
@GET
@Path("/GetFeeds")
@Produces("application/json")
public String feed()
{
String feeds = null;
try
{
ArrayList<FeedObjects> feedData = null;
ProjectManager projectManager= new ProjectManager();
feedData = projectManager.GetFeeds();
Gson gson = new Gson();
System.out.println(gson.toJson(feedData));
feeds = gson.toJson(feedData);
}
catch (Exception e)
{
System.out.println("Exception Error"); //Console
}
return feeds;
}
@GET
@Path("/insert/{empname}/{empsalary}")
public String insertEmpName(@PathParam("empname") String empname,@PathParam("empsalary") String empsalary) {
String result = "Employee Insertion Failed!!!!";
try {
Database database = new Database();
Connection connection = database.Get_Connection();
Project n = new Project();
boolean b = n.insertEmpName(connection, empname,empsalary);
if (b == true) {
result = "Employee Added SuccessFully!!!!";
} else {
result = "Employee Already Exists!!!";
}
} catch (Exception e) {
System.out.println(e);
}
return result;
}
@POST
@Path("/justTesting")
@Consumes(MediaType.APPLICATION_JSON)
public Response myresponse(FeedObjects fb)
{
System.out.println("Name is "+fb.getEmpname());
return Response.status(201).entity("Tested !!").build();
}
}
这是我的类,其中包含变量的 setter 和 getter,我将它们作为参数传递给上述方法并使用其对象调用,即 fb
package dto;
public class FeedObjects
{
private String empname;
private String empsalary;
public FeedObjects() {
// TODO Auto-generated constructor stub
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public String getEmpsalary() {
return empsalary;
}
public void setEmpsalary(String empsalary) {
this.empsalary = empsalary;
}
}
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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>FirstProject</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletAdaptor</servlet-name>
<servlet-class>
com.sun.jersey.server.impl.container.servlet.ServletAdaptor
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>webService</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdaptor</servlet-name>
<url-pattern>/REST/*</url-pattern>
</servlet-mapping>
</web-app>
包含的库如下:
- asm-3.1.jar
- gson-2.2.1.jar
- jersey-client-1.0.3.jar
- jersey-core-1.0.3.jar
- jersey-server-1.0.3.jar
- joda-time-2.0.jar
- jsr311-api-1.0.jar
- mysql-connector-java-5.0.8-bin.jar
所以请帮我解决这个错误。我是 Java REST Web 服务的新手,但我正在努力解决这个问题。
【问题讨论】:
-
您在路径参数和表单参数之间搞错了。你能分享你试过的网址吗
-
http://:/WebService/insert/seo/50000
-
是的,当您有最少字段时插入记录,但假设您有超过 30 个字段要插入,则 url 不允许插入,所以请参阅第三部分,即 POST 一个带有路径的“ justTesting”。在这里我想以 JSON 的形式发送数据来测试 url,以便以后我的应用程序可以使用它。我希望我很清楚
-
将其作为表单参数发送。并在您的方法中使用@FormParam
-
我该如何使用它?您可以发布一些示例或链接吗?
标签: java json web-services rest jar