2017-07-19 1 views
0

Comment quitter HttpClient? Il n'y a pas de méthode trouvée.Quitter avec la grâce de DefaultHttpClient

HttpClient Client = new DefaultHttpClient(); 
String userpass = usr + ":" + pwd; 

HttpPost httpGet = new HttpPost(dataimport_cmd); 
String encoding = DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8")); 
httpGet.setHeader("Authorization", "Basic " + encoding); 

Client.execute(httpGet); 

J'ai essayé d'inclure l'exécution dans une réponse closeeable mais elle n'a pas quitté la classe.

CloseableHttpResponse response = (CloseableHttpResponse) 
Client.execute(httpGet); 
response.close(); 

J'ai essayé d'utiliser return pour sortir de la classe.

retour;

+0

Pourquoi utilisez-vous une classe obsolète? Vous ne trouverez pas beaucoup d'aide pour les problèmes obsolètes –

+0

hmmmm. normalement l'IDE que j'utilise l'indiquera. permettez-moi de vérifier la nouvelle classe – user3286012

Répondre

0

Si la version de votre client http est supérieure à la version 4.3, vous pouvez utiliser CloseableHttpClient au lieu de HttpClient. Il a une méthode close().

CloseableHttpClient client = new DefaultHttpClient(); 
... 
client.close(); 
+0

Merci. En fait, je suis allé avec cette approche, mais il ne sort toujours pas. Bien que je n'ai pas utilisé defaulthttpclient parce que le commentaire précédent a suggéré de ne pas utiliser la classe depracated. Client CloseableHttpClient = HttpClientBuilder.create(). Build(); \t HttpPost httpGet = new HttpPost (dataimport_cmd); \t Chaîne de codage = DatatypeConverter.printBase64Binary (userpass.getBytes ("UTF-8")); \t httpGet.setHeader ("Autorisation", "De base" + encodage); \t \t client.exécute (httpGet); \t \t client.close(); – user3286012

+0

En fait, votre code source est correct et fonctionne pour moi. Mais si j'utilise une URL comme "http://192.168.3.66:80", où 192.168.3.66 est en panne, alors l'application attend l'appel de client.execute() jusqu'au timeout. Vous pouvez avoir une situation similaire. – taner