XML データ (または JSON) を受け入れようとしている JAX-RS Jersey WebService があり、String
渡されたレコードの総数を示す応答を返します。
これが私のサービスコードです:
@Path("customers")
@Singleton
public class CustomersResource {
...
@POST
@Path("addall")
@Produces("text/html")
@Consumes(javax.ws.rs.core.MediaType.APPLICATION_XML)
public String addCustomers(List<Customer> customerList) {
return "success : received " + customerList.size() ;
}
...
}
ここに私のクライアントコードがあります:
public static void main(String[] args) {
Client client = Client.create();
WebResource webresource = client.resource( "http://localhost:8080/restdemo/services/customers/addall");
String input = "<customerList><customer><name>name1</name></customer><customer><name>name2</name></customer></customerList>";
String response = webresource.type("application/xml").post( String.class, input );
System.out.println(response);
}
エラー:
Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/json, was not found
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
at com.sun.jersey.api.client.Client.handle(Client.java:648)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:568)
at restdemoclient.Main.main(Main.java:35)
Caused by: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/json, was not found
at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
... 5 more
役立つ可能性のあるサンプルコードへのヘルプまたはポインタをいただければ幸いです。