【发布时间】:2015-06-01 16:28:20
【问题描述】:
我正在使用最新版本的 Jersey 来实现一些 REST 示例服务。
您是否知道为什么当我使用 Fiddler 生成以下 HTTP 请求时,我得到:500 Internal Server Error
MessageBodyWriter not found for media type={application/json, q=1000}, type=class java.util.ArrayList, genericType=java.util.ArrayList<com.example.Todo>
HTTP 请求:
GET http://localhost:8080/RestProject/rest/todos/1 HTTP/1.1
Connection: close
Accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/41.0.2272.101 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
Host: localhost:8080
这就是调用的 Rest 方法:
//This method is called if XML or JSON is requested
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON,MediaType.TEXT_XML})
public Todo getEntityXMLOrJSON(@PathParam("id") int id)
{
Todo todo = new Todo();
todo.setSummary("This is my first todo " + id);
todo.setDescription("This is my first todo");
return todo;
}
当我请求 xml 数据时,一切正常。
编辑:
【问题讨论】:
-
你有任何堆栈跟踪可以告诉我们。通常 500 表示抛出异常,在大多数情况下会记录
-
你也可以列出你所有的依赖项/jars
-
只保留您在教程中看到的罐子。把其他东西都拿出来。然后找到并添加these。它应该可以工作。
-
您确定这是与您向我们展示的错误相对应的代码吗?因为错误是关于尝试编组
ArrayList<Todo>。很简单,有一个Todo你回来了。
标签: java rest http jersey jersey-2.0