0

Apache Wink 1.0で記述された単純なWebサービスがあり、JSONデータを送受信したいと考えています。

Winkのドキュメントによると、これは機能するはずです...

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

...しかし、Webサービスにアクセスしようとするとこのエラーが表示されます...

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

...アドバイスや提案は大歓迎です!

ロブ

4

1 に答える 1

0

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はMyDをシリアル化してJSONを実行します。実際、よりクリーンなアプローチは、Responseオブジェクトを返すことです。

public Response postJSON(MyDto dto) {
    //do something
    MyDto md = new MyDto();
    return Response.ok(md);
}
于 2012-04-12T21:45:55.620 に答える