2017-08-17 27 views
0

私はApache HttpClient 4.2を使用していますが、下記のJSONレスポンスからtitleプロパティを取得するだけです。Apache HttpClientのHttpResponseオブジェクトからJSONプロパティを取得します

このためにEntityUtils.toString()メソッドを使用する必要がありますか?

コード

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost postRequest = new HttpPost(MAILCHIMP_API_URL); 

postRequest.setHeader("Content-Type", "application/json"); 
postRequest.setHeader("Authorization", "Basic " + MAILCHIMP_API_KEY_BASE64); 

StringEntity entity = new StringEntity(json.toString(), "UTF8"); 
postRequest.setEntity(entity); 

HttpResponse response = httpClient.execute(postRequest); 

// Closes the connection 
EntityUtils.consume(response.getEntity()); 

JSONレスポンス

{ 
    "type": "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/", 
    "title": "Member Exists", 
    "status": 400, 
    "detail": "[email protected] is already a list member. Use PUT to insert or update list members.", 
    "instance": "" 
} 
+0

[this](https://stackoverflow.com/questions/10804466/how-to-convert-httpentity-into-json)が役立ちます。 –

答えて

1

この(jackson2 libに)を試してみてください。

TypeReference<Map> mapType = new TypeReference<Map>() {}; 
ObjectMapper mapper = new ObjectMapper(); 
Map<String, String> responseJson = 
mapper.readValue(response.readEntity(String.class), mapType); 
String typeValue = responseJson.get("type"); 

おそらくあなたはマッパーのインスタンスを1つだけ作成することができますそしてM apType。 しかし、私はあなたのJSONを表し、

mapper.readValue(response.readEntity(String.class), YourType.class) 
0

あなたは、Apache HTTP APIの上に構築されたHTTP要求を使用することができます使用するJavaクラスを作成することを好むだろう。ドキュメントhere

private static final HttpRequest<Map<String, Object>> HTTP_REQUEST = 
      HttpRequestBuilder.createPost(MAILCHIMP_API_URL, new TypeReference<Map<String, Object>>() { 
      }) 
        .addContentType(ContentType.APPLICATION_JSON) 
        .addDefaultHeader("Authorization", "Basic " + MAILCHIMP_API_KEY_BASE64) 
        .build(); 

    public void method() { 
     String title = HTTP_REQUEST.executeWithBody(json.toString()).get().get("title"); 
    } 
関連する問題