2012-03-02 3 views
0

Apache Wink 1.0으로 작성된 간단한 웹 서비스가 있는데 JSON 데이터를 받아서 반환하고 싶습니다.간단한 JSON JAX-RS 웹 서비스의 문제점은 무엇입니까?

윙크의 문서에 따르면,이 작업을해야

...

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public JSONObject postJSON(JSONObject requestJSON) { 
    JSONObject jobj = new JSONObject(); 
    return jobj; 
} 

...하지만 웹 서비스를 공격하려고 할 때이 오류가 표시 ...

org.apache.wink.server.internal.handlers.PopulateResponseMediaTypeHandler - 
Content-Type not specified via Response object or via @Produces annotation 
so automatically setting via generic-type compatible MessageBodyWriter providers 

.. 어떤 조언이나 제안이 대단히 감사합니다!

Rob

+0

당신이 [ "응용 프로그램/JSON"을 (시도 가지고 http://incubator.apache.org/wink/1.0/html/JAX-RS%20Request%을 반환하는 것입니다 20and % 20Response % 20Entities.html)? – Thomas

+0

예, 동일한 결과가 표시됩니다. –

+0

이상한 오류. 정의가 올바르게 보이지만 org.json.JSONObject 인 경우에는 serializable이 확실하지 않습니다. 반환 유형을 String으로 변경하여 모든 경로가 적어도 올바른지 확인하십시오. 또한 가능하면 전화 서명을 게시하십시오. – Perception

답변

1

JSONObject의 사용법은 약간 이상합니다. 더 쉽고 유연한 접근 방식 :

public MyDto postJSON(MyDto dto) { 
    //do something 
    MyDto md = new MyDto(); 
    return md; 
} 

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class MyDto { 
    private String f1; 
    private int f2; 
    //etc. 
} 

JAX-RS는 MyDto do JSON을 직렬화합니다. 사실, 심지어 청소기 접근 방식은 응답 개체를

public Response postJSON(MyDto dto) { 
    //do something 
    MyDto md = new MyDto(); 
    return Response.ok(md); 
}