2

ich verwende Android Studio-API 23, und ich habe diese Warnungen deprecated warningHttpGet, Httpclient, Httpresponse, HttpEntity, EntityUtils deprectated

Hier ist mein Code

@Override 
    protected Boolean doInBackground(String... urls) { 
     String strNama[], strDeskripsi[], strFoto[], strMarker[], strLng[], strLat[]; 

     try { 
      HttpGet httppost = new HttpGet(urls[0]); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(httppost); 
      int status = response.getStatusLine().getStatusCode(); 
      if (status == 200) { 
       HttpEntity entity = response.getEntity(); 
       String data = EntityUtils.toString(entity); 
       JSONObject jsono = new JSONObject(data); 
       JSONArray konten = jsono.getJSONArray("konten"); 
       strNama = new String[konten.length()]; 
       strDeskripsi = new String[konten.length()]; 
       strFoto = new String[konten.length()]; 
       strMarker = new String[konten.length()]; 
       strLat = new String[konten.length()]; 
       strLng = new String[konten.length()]; 
       for (int i = 0; i < konten.length(); i++) { 
        JSONObject object = konten.getJSONObject(i); 
        strNama[i] = object.getString("nama"); 
        strDeskripsi[i] = object.getString("deskripsi"); 
        strFoto[i] = object.getString("foto"); 
        strMarker[i] = object.getString("marker"); 
        strLat[i] = object.getString("lat"); 
        strLng[i] = object.getString("lng"); 
        Actors actor = new Actors(); 
        actor.setName(strNama[i]); 
        actor.setDescription(strDeskripsi[i]); 
        actor.setImage(strFoto[i]); 
        actor.setMarker(strMarker[i]); 
        actor.setLat(strLat[i]); 
        actor.setLng(strLng[i]); 
        actorsList.add(actor); 
       } 
       return true; 
      } 

     } catch (ParseException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return false; 
    } 

Und hier ist in Modul

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    useLibrary 'org.apache.http.legacy' 
    defaultConfig { 
     applicationId "com.krb.navigasi.petakebunrayabogor" 
     minSdkVersion 10 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

Es läuft gut in Android 5.0, aber wie kann ich diese Warnungen lösen? Ich hoffe, dass jemand mir helfen kann, meinen Code oben zu reparieren. Jede Hilfe wird sehr geschätzt.

Vielen Dank im Voraus.

+0

Apache HTTP-Modul in den neuesten Versionen synchronisieren entfernt wurde. Also musst du eine andere Option wie OkHttp, Volley so wählen. – Khan

+0

@Michael Julius Christopher M .: Werte für compileSdkVersion, buildToolsVersion und targetSdkVersion verringern n siehe shd-Arbeit, da sie in API 23 veraltet sind. – kevz

Antwort

0

initialisieren Nur diese und

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.cli‌​ent:4.1.2' 
+0

Haben Sie es in Android 6.0 laufen? Ist es gut in Android 6.0? –

+0

ja es funktioniert .. es funktioniert für Sie? –

+0

@MichaelJulyusChristopherM. Siehe meine bearbeitete Antwort –

2

Da bereits erwähnt wurde, dass erwähnte Klassen veraltet sind, empfehlen Android-Dokumentationen, dass Sie HttpURLConnection verwenden, wo Sie Netzwerkanrufe selbständig behandeln können, stellen Sie sicher, dass Sie sie aus dem Hauptthread schreiben.

unten angegeben ist ein Beispiel, wie Sie können POST ein Unternehmen mit HttpURLConnection

  HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setRequestMethod("POST"); // hear you are telling that it is a POST request, which can be changed into "PUT", "GET", "DELETE" etc. 
      httpURLConnection.setRequestProperty("Content-Type", "application/json"); // here you are setting the `Content-Type` for the data you are sending which is `application/json` 
      httpURLConnection.connect(); 

und wenn Sie einige Daten auf die Instanz des HttpURLConnection Posting Sie können es so machen ...

  JsonObject jsonObject = new JsonObject(); 
      jsonObject.addProperty("para_1", "arg_1"); 
      jsonObject.addProperty("para_2", "arg_2"); 

      DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream()); 
      wr.writeBytes(jsonObject.toString()); 
      wr.flush(); 
      wr.close(); 

Da diese Klasse mit Android Framework gebündelt ist keine Notwendigkeit, eine Bibliothek hinzuzufügen, aber ich würde Ihnen empfehlen, etwas wie OkHTTP,

zu verwenden

diese Pflege von Netzanrufe von anderen Thread nehmen und gegebenen Beispiel zeigt, wie Sie

public static final MediaType JSON 
    = MediaType.parse("application/json; charset=utf-8"); 

OkHttpClient client = new OkHttpClient(); 

String post(String url, String json) throws IOException { 
    RequestBody body = RequestBody.create(JSON, json); 
    Request request = new Request.Builder() 
     .url(url) 
     .post(body) 
     .build(); 
    Response response = client.newCall(request).execute(); 
    return response.body().string(); 
} 

Dieses Beispiel ruft die Netzanruf auf dem Hauptthread posten können Sie eher enqueue wie diese

okHttpClient.newCall(request).enqueue(new Callback() { 
     @Override 
     public void onFailure(Call call, IOException e) { 

     } 

     @Override 
     public void onResponse(Call call, Response response) throws IOException { 

     } 
    }); 
machen wollen
+0

Kannst du mir helfen, meinen Code zu korrigieren, den ich oben gepostet habe? Sorry, ich bin neu in Android :( –

+0

Sie können den Code in der Antwort verwenden, beide Snippet würde mit kleinen Änderungen funktionieren, wenn Sie noch irgendein Problem haben, übergeben Sie mir die URL, von der Sie die Antwort erhalten, die ich Ihnen sagen kann was zu tun –

Verwandte Themen