2013-10-24 9 views
9

jerseyクライアントを使用して、jsonというレスポンスを返すREST URIにファイルを送信しています。 私の要件は、(json)という文字列をそのまま文字列に読み込むことです。jerseyクライアントを使用して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)は何も返しません。

ここで何が間違っているのでしょうか?

答えて

15

を使用することを検討する必要があります。 getEntity(String.class)の前にbufferEntityメソッドを呼び出すだけでした。これは応答を文字列として返します。上記の答えが正しいが

clientResp.bufferEntity(); 
    String x = clientResp.getEntity(String.class); 
+1

この時点で正しいJerseyメソッドはgetEntity(String.class)ではなくreadEntity(String.class)です。 –

0

あなたはまだこれで問題を得た場合、私は問題の解決策を見つけることができたrest-assured

+0

感謝。 REST保証は有望だと思われますが、私のプロジェクトではジャージクライアントしか使用できません。 :( – Sudhir

5

は、ジャージーのAPI V2.7を使用してそれがResponseと若干異なります。respnseため

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));