2017-08-17 1 views
0

J'utilise Apache HttpClient 4.2 et j'ai juste besoin de récupérer la propriété title de la réponse JSON ci-dessous. Est-ce que j'aurais besoin d'utiliser la méthode EntityUtils.toString() pour cela?Récupère la propriété JSON de l'objet HttpResponse dans Apache HttpClient

code

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

Réponse 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) peut aider. –

Répondre

1

Essayez cette (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"); 

Probablement vous pouvez créer une seule instance de mappeur et M apType. Mais, je préférerais créer une classe java qui représentera votre JSON et utiliser

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

Vous pouvez utiliser http-request construit sur http apache api. Documentation 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"); 
    }