2015-09-11 10 views
5

Ich habe Online-Tutorials zu diesem Code verfolgt. und werde Google Play mit Android API 23 Marshmallow veröffentlichen.android Programmierung NameValuePair für api entfernt 23

private Map<String, String> decodeExtras(String extras) { 
    Map<String, String> results = new HashMap<String, String>(); 
    try { 
     URI rawExtras = new URI("?" + extras); 
     List<NameValuePair> extraList = URLEncodedUtils.parse(rawExtras, "UTF-8"); 
     for (NameValuePair item : extraList) { 
      String name = item.getName(); 
      int i = 0; 
      while (results.containsKey(name)) { 
       name = item.getName() + ++i; 
      } 
      results.put(name, item.getValue()); 
     } 
    } catch (URISyntaxException e) { 
     Log.w(TAG, "Invalid syntax error while decoding extras data from server."); 
    } 
    return results; 
} 

Aber Namevaluepair und URLEncodedUtils wurden in api23 Eibisch gelöscht. Wie kann ich diesen Code ändern?

Bitte helfen Sie mir.

+1

möglich Duplikat [Wie das Vermächtnis Apache HTTP-Client auf Android M benutzen?] (Http://stackoverflow.com/questions/31653002/how-to-use-the-legacy-apache-http- client-on-android-m) –

Antwort

0

Sie können manuell hinzufügen Httpclient-Bibliothek in Ihr Projekt

2

Verwenden httpMime.jar Daten auf Server-Datenbank.

Laden Sie die.jar von here herunter und fügen Sie sie in Ihren libs-Ordner ein.

Verbrauch:

MultipartEntity multi = new MultipartEntity(); 
multi.addPart("username", new StringBody("Kgandroid")); 
multi.addPart("password", new StringBody("nopass")); 

Dies ist eine perfekte Alternative für namevaluepairs.

Für URLEncodedUtils:

lesen this.

Sie finden:

Diese Vorschau Unterstützung für den Client Apache HTTP entfernt. Wenn Ihre App diesen Client verwendet und auf Android 2.3 (API-Level 9) oder höher abzielt, verwenden Sie stattdessen die HttpURLConnection-Klasse. Diese API ist effizienter, da sie die Netzwerknutzung durch transparentes Komprimierungs- und Antwort-Caching reduziert und den Stromverbrauch minimiert.

So, jetzt haben wir HttpURLConnection

Ein einfaches Tutorial verwenden HttpURLConnection verwenden here finden.

0

Es ist nicht genau das, was Sie suchen, aber es ist ganz in der Nähe:

Uri.Builder builder = new Uri.Builder() 
    .query(extras); 
Uri uri = builder.build(); 
Set<String> keys = uri.getQueryParameterNames(); 
Iterator<String> iterator = x.iterator(); 
HashMap<String, List<String>> map = new HashMap<>(); 
while(iterator.hasNext()) { 
     String key = iterator.next(); 
     List<String> values = uri.getQueryParameters(key); 
     map.put(key, values); 
} 

es ein Uri aus dem ehemaligen Parameter erstellt extras Ihre Methode, die wie die Abfrage Teil Ihrer URL aussieht. Danach können Sie getQueryParameterNames anrufen, um eine Set der Schlüssel und von jedem Schlüssel eine List<String>, die jeden Wert der Extras für diesen bestimmten Schlüssel enthält abrufen.

7

Verwenden Sie einfach Retrofit

ODER

Verwenden HttpURLConnection

OR

Fügen Sie diese auf Ihre build.gradle (aber nicht vorgeschlagen wird)

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

Dies ist die beste Antwort, da es die 3 besten Optionen aufführt (in absteigender Reihenfolge der Erwünschtheit nicht weniger). –

2

Hier ist das Äquivalent Code Verwendung von android.net.Uri für API Level 11 (Honeycomb) und höher. Dieser Code ist ziemlich einfach. Es macht also keinen Sinn, APIs von Drittanbietern oder veraltete APIs zu verwenden, um dieses eine Problem zu vermeiden.

private Map<String, String> decodeExtras(String extras) { 
    Map<String, String> results = new HashMap<>(); 
    Uri uri = new Uri.Builder().encodedQuery(extras).build(); 
    Set<String> parameterNames = uri.getQueryParameterNames(); 
    for (String parameterName : parameterNames) { 
     List<String> values = uri.getQueryParameters(parameterName); 
     int count = values.size(); 
     if (count >= 1) { 
      results.put(parameterName, values.get(0)); 
      for (int i = 1; i < count; ++i) { 
       results.put(parameterName + i, values.get(i)); 
      } 
     } 
    } 
    return results; 
} 
Verwandte Themen