366 Stimmen

Senden einer HTTP POST-Anfrage in Java

Nehmen wir diese URL an...

http://www.example.com/page.php?id=10            

(Hier muss die ID in einer POST-Anfrage gesendet werden)

Ich möchte die id = 10 zum Server der page.php die es in einer POST-Methode akzeptiert.

Wie kann ich dies von Java aus tun?

Ich habe das ausprobiert:

URL aaa = new URL("http://www.example.com/page.php");
URLConnection ccc = aaa.openConnection();

Aber ich kann immer noch nicht herausfinden, wie ich sie per POST versenden kann.

11voto

Hani Punkte 193

Ich schlage vor, Postman zu verwenden, um den Anforderungscode zu erzeugen. Stellen Sie die Anfrage einfach mit Postman und klicken Sie dann auf die Registerkarte Code:

code tab

Daraufhin wird das folgende Fenster angezeigt, in dem Sie auswählen können, in welcher Sprache der Anforderungscode angezeigt werden soll: request code generation

6voto

spok Punkte 61

Einfach mit java.net:

public void post(String uri, String data) throws Exception {
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create(uri))
        .POST(BodyPublishers.ofString(data))
        .build();

HttpResponse<?> response = client.send(request, BodyHandlers.discarding());
System.out.println(response.statusCode());

Hier finden Sie weitere Informationen: https://openjdk.java.net/groups/net/httpclient/recipes.html#post

5voto

chandan kumar Punkte 190

Die einfachste Möglichkeit, Parameter mit der Post-Anfrage zu senden:

String postURL = "http://www.example.com/page.php";

HttpPost post = new HttpPost(postURL);

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "10"));

UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params, "UTF-8");
post.setEntity(ent);

HttpClient client = new DefaultHttpClient();
HttpResponse responsePOST = client.execute(post);

Sie haben es geschafft. Jetzt können Sie responsePOST . Antwortinhalt als String abrufen:

BufferedReader reader = new BufferedReader(new  InputStreamReader(responsePOST.getEntity().getContent()), 2048);

if (responsePOST != null) {
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(" line : " + line);
        sb.append(line);
    }
    String getResponseString = "";
    getResponseString = sb.toString();
//use server output getResponseString as string value.
}

4voto

Verwendung von okhttp :

Der Quellcode für okhttp kann hier gefunden werden https://github.com/square/okhttp .

Wenn Sie ein pom-Projekt schreiben, fügen Sie diese Abhängigkeit hinzu

<dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.2.2</version>
    </dependency>

Falls nicht, suchen Sie einfach im Internet nach "download okhttp". Es werden mehrere Ergebnisse angezeigt, von denen Sie ein jar herunterladen können.

Ihr Code :

import okhttp3.*;

import java.io.IOException;

public class ClassName{
        private void sendPost() throws IOException {

                // form parameters
                RequestBody formBody = new FormBody.Builder()
                        .add("id", 10)
                        .build();

                Request request = new Request.Builder()
                        .url("http://www.example.com/page.php")
                        .post(formBody)
                        .build();

                OkHttpClient httpClient = new OkHttpClient();

                try (Response response = httpClient.newCall(request).execute()) {

                    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

                    // Get response body
                    System.out.println(response.body().string());
                }
        }
    }

1voto

user207421 Punkte 297318

Rufen Sie an. HttpURLConnection.setRequestMethod("POST") y HttpURLConnection.setDoOutput(true); Eigentlich ist nur letzteres erforderlich, da POST dann die Standardmethode ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X