我正在使用带有 xstream 和 jettison 扩展的 Restlet 2.1.0 的 jse 版本,这使我能够拥有这样声明的资源:
@Get("json")
public Customer retrieve();
这让我有一个客户端可以选择是获取 JSON 字符串还是获取 Customer 对象,而 xstream+jettison 进行序列化/反序列化。
我也有一个这样声明的资源方法:
@Post
public Customer store(Customer customer);
我可以使用以下内容发布:
clientResource.post(customer, Customer.class);
这一切似乎都很好。然而,最简单的情况是不起作用的一件事,即向 Post Restlet 资源发布 JSON 字符串。
当我尝试发布以下 JSON 字符串时:
{"com.redprairie.task.common.Customer":{"firstName":"George","lastName":"Shaw","birthDate":"1856-07-26 07:00:00.0 UTC","address":"Bibbs Hall Lane, Ayot St. Lawrence, AL6 9BX United Kingdom"}}
我得到这个堆栈跟踪:
<failure message="Unsupported Media Type (415) - Unsupported Media Type" type="org.restlet.resource.ResourceException">Unsupported Media Type (415) - Unsupported Media Type
at org.restlet.resource.ClientResource.doError(ClientResource.java:612)
at org.restlet.resource.ClientResource.handleInbound(ClientResource.java:1203)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1070)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1087)
at org.restlet.resource.ClientResource.post(ClientResource.java:1438)
at com.redprairie.task.common.rest.RestletResource.post(RestletResource.java:99)
at com.redprairie.task.common.rest.ServerResourceTest.testPostMethodUsingJSON(ServerResourceTest.java:165)
我猜我做错了一些简单的事情,但我不确定它是什么。