REST Java状态500内部错误
发布时间:2020-12-15 02:31:59 所属栏目:Java 来源:网络整理
导读:好的,所以我正在使用 Java编写REST服务器并尝试测试它,但我一直收到错误代码500请帮忙.我已经逐步完成了代码并知道它使用正确格式化的DataClass对象的ArrayList到达此方法的底部(我已经检查过它们并且没有成功运行REST前端). 这是我正在调用的REST方法 @GET
好的,所以我正在使用
Java编写REST服务器并尝试测试它,但我一直收到错误代码500请帮忙.我已经逐步完成了代码并知道它使用正确格式化的DataClass对象的ArrayList到达此方法的底部(我已经检查过它们并且没有成功运行REST前端).
这是我正在调用的REST方法 @GET @Produces(MediaType.APPLICATION_XML) public List<DataClass> receiveXML( @DefaultValue("null") @QueryParam("artist") String artist,@DefaultValue("null") @QueryParam("title") String title,@DefaultValue("null") @QueryParam("album") String album,@DefaultValue("null") @QueryParam("genre") String genre,@DefaultValue("null") @QueryParam("type") String type,@DefaultValue("false") @QueryParam("open") Boolean open,@DefaultValue("false") @QueryParam("close") Boolean close,@DefaultValue("noPath") @QueryParam("path") String path,@DefaultValue("noKey") @QueryParam("key") String key,@DefaultValue("null") @QueryParam("show") String show,@DefaultValue("null") @QueryParam("season") String season,@DefaultValue("null") @QueryParam("format") String format) { if(!artist.equals("null")) this.artist = artist; if(!title.equals("null")) this.title = title; if(!album.equals("null")) this.album = album; if(!genre.equals("null")) this.genre = genre; if(!type.equals("null")) this.type = type; if(!open.equals("false")) this.open = open; if(!close.equals("false")) this.close = close; if(!path.equals("noPath")) this.path = path; if(!key.equals("noKey")) this.keyword = key; if(!show.equals("null")) this.show = show; if(!season.equals("null")) this.season = season; if(!format.equals("null")) this.format = format; MultivaluedMap<String,String> queryParams = buildMap(); List<DataClass> resp = receive(queryParams); return resp; } 这是DataClass @XmlRootElement public class DataClass { public String pathname; ArrayList<String> parsedSet; ResultSet resultSet; public String id,path,type,category,size,update,idMeta,title,description; public String genre,album,artist,show,season; public DataClass(ResultSet resultSet){ this.resultSet = resultSet; parsedSet = new ArrayList<String>(); setStringVariables(); } /** * Sets the pathname variable of the local file to be returned * @param pathname */ public DataClass(String pathname){ this.pathname = pathname; } methods to set the fields... } 以下是我如何调用服务器,我知道服务器正在被正确调用,因为我有一个只返回字符串的测试方法. public static void testXML() { //a map that adds parameters that will then be added to the the WebService MultivaluedMap<String,String> queryParams = new MultivaluedMapImpl(); queryParams.add("type","music"); //retrieve info for an artist in XML format System.out.println(service.path("rest").path("media").queryParams(queryParams).accept( MediaType.APPLICATION_XML).get(String.class)); } 这是我的错误 Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/TigrisRESTServer/rest/media?type=music returned a response status of 500 Internal Server Error at com.sun.jersey.api.client.WebResource.handle(WebResource.java:676) at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503) at tigris.restserver.client.ourClient.testXML(ourClient.java:45) at tigris.restserver.client.ourClient.main(ourClient.java:28) 对不起,我忘了包含一些东西 定义receiveXML的类具有此功能 @Path("/media") public class Server { } 这是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>RestServer</display-name> <servlet> <servlet-name>Tigris REST Server App</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>tigris.restserver.connection</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Tigris REST Server App</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> 这工作正常(它只是返回一个字符串) 这是客户 public static void testTEST() { System.out.println(service.path("rest").path("media").accept( MediaType.TEXT_PLAIN).get(String.class)); } 这是服务器端 @GET @Produces(MediaType.TEXT_PLAIN) public String sayPlainTextHello() { return "Hello Server"; } 谢谢 解决方法
好像你忘了包含它应该映射的路径.
@Path("/rest/") GET http://localhost:8080/TigrisRESTServer/rest/media?type=music 如果你想映射URL / rest /那是. 例如,请参阅此链接Jersey Documentation (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |