Aktualisierte Antwort:
Da einige der Klassen in der ursprünglichen Antwort in der neueren Version von Apache HTTP Components veraltet sind, veröffentliche ich dieses Update.
By the way, können Sie die vollständige Dokumentation für weitere Beispiele zugreifen hier .
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.a-domain.com/foo/");
// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("param-1", "12345"));
params.add(new BasicNameValuePair("param-2", "Hello!"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
try (InputStream instream = entity.getContent()) {
// do something useful
}
}
Ursprüngliche Antwort:
Ich empfehle Apache HttpClient zu verwenden. Es ist schneller und einfacher zu implementieren.
HttpPost post = new HttpPost("http://jakarata.apache.org/");
NameValuePair[] data = {
new NameValuePair("user", "joe"),
new NameValuePair("password", "bloggs")
};
post.setRequestBody(data);
// execute method and handle any error responses.
...
InputStream in = post.getResponseBodyAsStream();
// handle response.
Weitere Informationen finden Sie unter folgender URL: http://hc.apache.org/
PostMethod
sie sich jetzt scheinen tatsächlich genanntHttpPost
wie pro stackoverflow.com/a/9242394/1338936 - nur für jedermann daran , diese Antwort , wie ich :) tatDas Senden einer POST-Anfrage ist in Vanilla Java einfach. Beginnend mit a
URL
müssen wir es nicht in einURLConnection
using konvertierenurl.openConnection();
. Danach müssen wir es in aHttpURLConnection
umwandeln, damit wir auf seinesetRequestMethod()
Methode zugreifen können , um unsere Methode festzulegen. Wir sagen schließlich, dass wir Daten über die Verbindung senden werden.Wir müssen dann angeben, was wir senden werden:
Senden eines einfachen Formulars
Ein normaler POST, der von einem http-Formular stammt, hat ein genau definiertes Format. Wir müssen unsere Eingabe in dieses Format konvertieren:
Wir können dann unseren Formularinhalt mit den richtigen Überschriften an die http-Anfrage anhängen und senden.
JSON senden
Wir können json auch mit Java senden, das ist auch einfach:
Denken Sie daran , dass verschiedene Server unterschiedliche Content-Typen für json akzeptieren, sehen diese Frage.
Senden von Dateien mit Java-Post
Das Senden von Dateien kann als schwieriger angesehen werden, da das Format komplexer ist. Wir werden auch Unterstützung für das Senden der Dateien als Zeichenfolge hinzufügen, da wir die Datei nicht vollständig im Speicher puffern möchten.
Dazu definieren wir einige Hilfsmethoden:
Mit diesen Methoden können wir dann eine mehrteilige Post-Anfrage wie folgt erstellen:
quelle
out.write(finishBoundaryBytes);
Linie brauchen?http.connect();
wird POST senden, nicht wahr?requests.post('http://httpbin.org/post', data = {'key':'value'})
Python… Ich bin neu in Java, daher ist dies eine sehr seltsame Verwendung des Wortes „einfach“ für mich :)quelle
encode(String)
ist veraltet. Sie müssen verwendenencode(String, String)
, was den Codierungstyp angibt. Beispiel :encode(rawData, "UTF-8")
.Die erste Antwort war großartig, aber ich musste try / catch hinzufügen, um Java-Compilerfehler zu vermeiden.
Außerdem hatte ich Probleme herauszufinden, wie man das liest
HttpResponse
mit Java-Bibliotheken .Hier ist der vollständigere Code:
quelle
e.printStackTrace()
behandelt nichts.Eine einfache Möglichkeit, Apache HTTP-Komponenten zu verwenden, ist
Schauen Sie sich die Fluent API an
quelle
einfachste Möglichkeit, Parameter mit der Post-Anfrage zu senden:
Du hast gemacht. Jetzt können Sie verwenden
responsePOST
. Antwortinhalt als Zeichenfolge abrufen:quelle
Call
HttpURLConnection.setRequestMethod("POST")
andHttpURLConnection.setDoOutput(true);
Eigentlich wird nur Letzteres benötigt, da POST dann zur Standardmethode wird.quelle
Ich empfehle die Verwendung von http-request, die auf Apache http api basiert.
quelle