ジャージクライアントを使用して、ファイルをREST URIとしてjsonとして応答を返すURIに投稿しています。私の要件は、応答をそのまま(json)文字列に読み取ることです。
これは、データをWebサービスに投稿するコードです。
final ClientResponse clientResp = resource.type(
MediaType.MULTIPART_FORM_DATA_TYPE).
accept(MediaType.APPLICATION_JSON).
post(ClientResponse.class, inputData);
System.out.println("Response from news Rest Resource : " + clientResp.getEntity(String.class)); // This doesnt work.Displays nothing.
clientResp.getLength()には応答のサイズである281バイトがありますが、clientResp.getEntity(String.class)は何も返しません。
ここで間違っている可能性のあるアイデアはありますか?
私はその問題の解決策を見つけることができました。 getEntity(String.class)の前にbufferEntityメソッドを呼び出す必要がありました。これにより、応答が文字列として返されます。
clientResp.bufferEntity();
String x = clientResp.getEntity(String.class);
上記の答えは正しいですが、Jersey API v2.7を使用すると、Response
とは少し異なります。
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080");
Response response = target.path("api").path("server").path("ping").request(MediaType.TEXT_PLAIN_TYPE).get();
System.out.println("Response: " + response.getStatus() + " - " + response.readEntity(String.class));
それでも問題が解決しない場合は、 rest-assured の使用を検討することをお勧めします。