2016-07-17 2 views
0

DefaultHttpClient est pas prise en charge dans l'API 23 en utilisant la version 6.0 Marshmallow et construire des outils Version est: 23.0.3DefaultHttpClient est pas pris en charge

import java.io.UnsupportedEncodingException; 
import java.util.List; 

public class JSONParser { 
    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 
    public JSONParser() { 

    } 
    public JSONObject makeHttpRequest(String url, String method, List<NameValuePair>params) { 
     try { 
      if(method == "POST") { 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 
       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      }else if(method == "GET") { 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       String paramString = URLEncodedUtils.format(params, "utf-8"); 
       url += "?" + paramString; 
       HttpGet httpGet = new HttpGet(url); 
       HttpResponse httpResponse = httpClient.execute(httpGet); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      } 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result" + e.toString()); 
     } 
     try { 
      jObj = new JSONObject(json); 
     } 
     catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data" + e.toString()); 
     } 
     return jObj; 
     } 
    } 

Il a été coupé sur la marque DefaultHttpClient. S'il vous plaît dites-moi le moyen de rectifier le problème.

Répondre

0

HttpClient n'est plus pris en charge sur l'API Android niveau 23. Vous devez utiliser URLConnection. Si vous souhaitez utiliser, ajouter ce qui suit à la build.gradle

android { 
    useLibrary 'org.apache.http.legacy' 
} 

Voici l'annonce: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

+0

J'ai déjà ajouté la bibliothèque d'utilisation ci-dessus dans mon build.gradle mais cela ne fonctionne pas. – A10

+0

@AniketSaxena réponse Nerd et ** compile 'com.squareup.okhttp: okhttp: 2.0.0' ** ajouter à votre dépendance, il devrait fonctionner – Nisarg

+0

Il m'a donné l'erreur Impossible de résoudre: com.squareup.okhttp: okhttp: 2.0 .0 – A10

0

Il est parce que le DefaultHttpClient est dépréciée. Maintenant, utilisez HttpUrlConnection.

visite ce pour plus de détails sur HttpUrlConnection

Exemple: retrive données d'URL

URL url = new URL("http://www.android.com/"); 
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
    try { 
    InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
    readStream(in); 
    } finally { 
    urlConnection.disconnect(); 
    } 

Visitez ici cette information est complète Exemple de Get et Post méthode utilisant HttpUrlConnection.

https://www.numetriclabz.com/android-post-and-get-request-using-httpurlconnection/

+0

Comment utiliser HttpUrlConnection dans le code susmentionné? S'il vous plaît, guidez moi la manière de le faire. – A10

+0

Comme j'ai inséré la bibliothèque d'utilisation dans mon fichier build.gradle – A10

+0

@AniketSaxena voir que je poste le lien visiter cette page. – Ironman

0

HttpClient est plus pris en charge, savoir si vous voulez travailler avec elle, vous devez rétrograder votre niveau de l'API, mais si je dois vous donner un conseil que vous pouvez utiliser d'autres bibliothèques comme Volley ou Retrofit.