2012-10-12 2 views
1

xstream 및 jettison 확장명이있는 jse 버전의 Restlet 2.1.0을 사용하여 다음과 같이 선언 된 리소스를 가질 수 있습니다.xstream 및 jettison을 사용하여 Restlet에 JSON을 게시하면 "지원되지 않는 미디어 유형"이됩니다.

@Get("json") 
public Customer retrieve(); 

이렇게하면 serialization/deserialization을 수행하는 xstream + jettison으로 JSON 문자열을 가져 오거나 Customer 객체를 가져올 클라이언트를 선택할 수 있습니다. 내가 좋아하는 뭔가를 사용하여 게시 할 수 있습니다

@Post 
public Customer store(Customer customer); 

가 :

clientResource.post(customer, Customer.class); 

이 모두 잘 작동하는 것 같다

는 또한 다음과 같이 선언 된 자원의 방법이있다. 그러나 작동하지 않는 한가지는이 포스트 Restlet 리소스에 JSON String을 게시하는 가장 간단한 시나리오입니다.

나는 다음과 같은 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) 

을 내가, 내가 잘못 간단 뭔가가 추측하고있어하지만, 나는 그것이 무엇인지 모른다.

답변

0

POST 요청 헤더에 content-type을 지정하고 있습니까?

+0

내가 resource.post (jsonString), resource.post (jsonString, MediaType.APPLICATION_JSON)를 사용하여 그것을 시도하고 내가 얻을 두 경우 모두 같은 오류. – user1735826

1

문제점을 해결할 수있었습니다.

String jsonString = "{some valid json}"; 
clientResource.post(jsonString, MediaType.APPLICATION_JSON); 

작동하지 않았다 :

나는 사용하여 JSON 문자열을 게시하려고했다. 확실하지 이유를 정확하게 작동하지 못했지만, 그것을 다음과 같은 방법을 수행하여 작동합니다

Representation rep = new StringRepresentation(jsonString, MediaType.APPLICATION_JSON); 
clientResource.post(rep);