web-dev-qa-db-ja.com

ジャージクライアントを使用してJSON応答を文字列として読み取る

ジャージクライアントを使用して、ファイルを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)は何も返しません。

ここで間違っている可能性のあるアイデアはありますか?

10
Sudhir

私はその問題の解決策を見つけることができました。 getEntity(String.class)の前にbufferEntityメソッドを呼び出す必要がありました。これにより、応答が文字列として返されます。

   clientResp.bufferEntity();
   String x = clientResp.getEntity(String.class);
17
Sudhir

上記の答えは正しいですが、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));
7
Marcio Jasinski

それでも問題が解決しない場合は、 rest-assured の使用を検討することをお勧めします。

0
Ian Lim