残りの Web サービスを呼び出すためにジャージー クライアントを使用しています。
私のWebサービスはjsonを消費しているので、jsonをWebサービスプロバイダーへの呼び出しに入れる必要があります。
以下の方法でやっています。
JSONObject object=new JSONObject();
object.put("name", employee.getName());
object.put("empId", employee.getEmpId());
object.put("organizationName", employee.getOrganizationName());
ClientResponse response = service.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, object);
しかし、私は以下の例外を受けています:
09:52:01,625 エラー [[mvc-dispatcher]] サーブレット mvc-dispatcher の Servlet.service() が例外 com.sun.jersey.api.client.ClientHandlerException をスローしました: Java タイプ、クラス net.sf のメッセージ本文ライター。 json.JSONObject、および MIME メディア タイプの application/json が見つかりませんでした com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288) で com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204) で com.sun.jersey.client で.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147) com.sun.jersey.api.client.Client.handle(Client.java:648) com.sun.jersey.api.client.WebResource.handle(WebResource) .java:670) com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:563) com.nec.jp.pflow.unc.service.EmployeeService.addEmployee(EmployeeService.java:44) で com.nec.jp.pflow.unc.controller.EmployeeController.addCustomer(EmployeeController.java:29) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
しかし、jsonを次のような文字列表現に変換すると:
String input = "{\"name\" : \"" + employee.getName() + "\",\"empId\" : \"" + employee.getEmpId() + "\",\"organizationName\" : \"" + employee.getOrganizationName() + "\"}";
ClientResponse response = service.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, input);
その後、正常に動作しています。
上記の例外を取得せずに JSON オブジェクトを配置する方法を提案してください。最善の方法は何ですか?
前もって感謝します。
上記の解決策が得られました。今、POJO を json に変換するために jackson-mapper API を使用しています。
以下はコードスニペットです。
ObjectMapper mapper = new ObjectMapper();
ClientResponse response = resource.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, mapper.writeValueAsString(employee));