5

Mit dem alten Apache-Zeug, das in API 22 veraltet ist, komme ich endlich dazu, meinen Netzwerkkram zu aktualisieren.Parameter mit HttpURLConnection übergeben

Mit openConnection() scheint ziemlich geradlinig. Ich habe jedoch kein gutes Beispiel gesehen, um Parameter zu senden.

Wie würde ich diesen Code aktualisieren?

 ArrayList<NameValuePair> param = new ArrayList<NameValuePair>(); 
     param.add(new BasicNameValuePair("user_id",String.valueOf(userId))); 
     httpPost.setEntity(new UrlEncodedFormEntity(param)); 

Nun, da NameValuePair und BasicNameValuePair sind ebenfalls veraltet.

EDIT: Meine Server-Seite php Code erwartet keine JSON-Parameter und ich kann nicht plötzlich aufgrund vorhandener Benutzer wechseln - so wird eine Nicht-JSON-Antwort empfohlen.

EDIT2: Ich muss nur Android 4.1+ im Moment zielen.

+0

wenn Sie minSdk Version beibehalten möchten, vielleicht Problem es ist nicht veralteten Methoden zu verwenden. –

+0

Nun, ich muss nur Android 4.1+ im Moment anvisieren, wenn es eine einzige Lösung gibt, die zu allem passt und keine veralteten Sachen verwendet, würde ich das gerne tun. Außerdem bin ich OCD, ich mag keine Zeilen, die durch meinen Code gehen und mir sagen, dass Dinge veraltet sind. – KickingLettuce

+0

Sie können Annotationen wie '@ SuppressLint' oder' @TargetApi (22) 'verwenden, um neuere Bibliotheken zu verwenden, und verwenden' @ Warnungen unterdrücken, um diese Warnungen zu löschen. Ich denke, das wäre keine schlechte Entscheidung. –

Antwort

7

ich es wie folgt festgelegt:

 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

Hier Sachen Parameter:

 String charset = "UTF-8"; 
     String s = "unit_type=" + URLEncoder.encode(MainActivity.distance_units, charset); 
     s += "&long=" + URLEncoder.encode(String.valueOf(MainActivity.mLongitude), charset); 
     s += "&lat=" + URLEncoder.encode(String.valueOf(MainActivity.mLatitude), charset); 
     s += "&user_id=" + URLEncoder.encode(String.valueOf(MyndQuest.userId), charset); 

     conn.setFixedLengthStreamingMode(s.getBytes().length); 
     PrintWriter out = new PrintWriter(conn.getOutputStream()); 
     out.print(s); 
     out.close(); 
1

versuchen Sie dies:
https://stackoverflow.com/a/29153585/4665516 , wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. hoffe es hilft!

+0

Das scheint geradlinig. Aber mein 'php'-Server-Code ist nicht eingerichtet, um 'JSON'-Antworten zu verarbeiten (es gibt' JSON' zurück zu Android, aber das ist hier nicht relevant). Ich kann nicht einfach anfangen, die Funktionsweise meines Server-Codes zu ändern, ohne bestehende Benutzer zu zerstören. Gibt es eine Nicht-JSON-Antwort? – KickingLettuce

+0

ich denke, dass es mit xml Antworten möglich ist. –

+0

Nun, ich muss verwenden, was ich vorher verwendet habe. Grundlegende POST-Array ist ich denke? Ich nehme an, ich kann auch einen 'json'-Check irgendeiner Art auf der Serverseite durchführen. – KickingLettuce