Ich versuche gerade eine POST-Methode über die HttpURLConnection-Klasse an einen einfachen PHP-Webservice über eine Android-Anwendung zu senden. Mehrere Lernprogramme verwenden die gepufferte Writer-Klasse, um die Parameter in den HTTP-Body zu schreiben, aber die HttpURLConnection hat auch eine setRequestProperty() -Methode, die der Verbindung ein Schlüssel-Wert-Paar hinzufügt. Anscheinend werden sie nicht für den gleichen Zweck verwendet, aber was ist der Unterschied (ich habe auch Google überprüft, aber fand keine Antwort darauf)?HTTP: difference Request Property und POST - Parameter
Antwort
setRequestProperty()
verwendet wird, HTTP-Header setzen (wie Content-Type
):
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Aber POST-Parameter Sie URL-Codierung müssen setzen sie und schreiben Sie die resultierende Zeichenfolge (auf Byte-Strom umgewandelt) an die OutputStream
erhalten von HttpURLConnection
Instanz.
Zum Beispiel a
mit Wert 1
und b
mit Wert 2
als POST-Parameter zu senden, können Sie folgendes tun können:
final String urlEncodedString = "a=1&b=2";
final byte[] bytesToWrite = urlEncodedString.getBytes(StandardCharsets.UTF_8);
conn.getOutputStream().write(bytesToWrite);
Hier conn
ist eine Instanz HttpURLConnection
.
Sie verwenden eine zu alte Methode, um eine Anfrage an den Server zu stellen. Versuchen Sie, eine Bibliothek zu verwenden, die viele unnötige Codes wie Laden in den Pufferleser und Konvertierungsprozess reduziert. Stattdessen empfehle ich Ihnen, die volley-Bibliothek zu verwenden. Lesen Sie dazu die Google-Dokumentation. Sie können ein benutzerdefiniertes JSONObjectReuqest erstellen und die getParams-Methode überschreiben, oder Sie können sie im Konstruktor als JSONObject bereitstellen, das in den Hauptteil der Anforderung eingefügt wird.
Like this (I bearbeitet Code):
JSONObject obj = new JSONObject();
obj.put("key", "value");
obj.put("key2", "value2");
// add whatever you want
RequestQueue queue = MyVolley.getRequestQueue();
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,obj,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response);
hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideProgressDialog();
}
});
queue.add(jsObjRequest);
i bereits über die Volley-Bibliothek lesen, aber im Interesse Ich wollte es altmodisch machen. danke für deinen Vorschlag :) – Doflaminhgo
- 1. HTTP Post Request mit Volley
- 2. AFNetworking und POST Request
- 3. Senden von HTTP-Post-Request mit Android
- 4. NodeJS ‚request‘ Modul: HTTP POST liefert 415
- 5. http Get und POST-Parameter von BaseHTTPHandler?
- 6. aktivieren HTTP-Request-POST im Frühjahr Boot-
- 7. Java HTTP-POST-Request-String kommt nicht
- 8. Android mehrt POST HTTP-Request 415 Fehler
- 9. 400 Bad Request for $ http post-Methode
- 10. Translating HTTP POST Körper C# request
- 11. WebAPI POST-Request-Parameter sind null
- 12. BOOST ASIO POST HTTP REQUEST - Header und Körper
- 13. wie Ajax-Request mit GET-Parameter und Post-Anforderung
- 14. AutoFixture: Property und heterogene Parameter
- 15. http POST von Körper mehrere Parameter
- 16. Very Simple AngularJS $ http POST Ergebnisse in '400 (Bad Request)' und 'Ungültige HTTP-Statuscode 400'
- 17. Frühling REST-Controller post request
- 18. Alamofire POST Bad Request
- 19. HTTP Request Angular 2
- 20. PHP POST-Request-Debugging
- 21. HTTP GET und POST Semantik und Einschränkungen
- 22. Zend2 Post Request
- 23. Python post request Fehler
- 24. Mehrere HTTP GET und POST
- 25. Ajax post request
- 26. Django jQuery post request
- 27. Arduino Append Request Parameter
- 28. Übergeben Sie 2 Parameter in $ http POST
- 29. HTTP Request Connector mule
- 30. angular2 - HTTP-Post-Anfrage-Parameter sind null
Danke, das ist alles, was ich wissen wollte :) – Doflaminhgo