次のように宣言されたリソースを使用できるようにする 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);
これはすべてうまくいくようです。ただし、うまくいかないのは、JSON 文字列をこの Post Restlet リソースに投稿するという最も単純なシナリオです。
次の 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)
私が間違っている単純なことがあると思いますが、それが何であるかはわかりません。