http post einer Webseite nachahmen

Fohnbit

Top Contributor
Hallo!

Ich müsste ein http post einer Webseite gleich senden:
1727344203924.png

1727344219307.png

Als Code habe ich :
Java:
String config = "dvn=WSDEV0001&lca=192.168.0.69&lcp=4196&wbp=80&wkm=0&lcm=255.255.255.0&lcg=192.168.0.254&dsa=192.168.1.4&dsp=4196&ipm=1&bdr=6&dtb=0&prt=0&stb=0&flc=0&ndr=0&nrt=300&rct=12&ptc=0&rto=0&emh=0&rcg=0&nwk=&rtp=&post=Submit";

private void sendConfig() throws IOException {
        String encodedData = URLEncoder.encode(config, "UTF-8");
        URL u = new URL("http://192.168.0.69/index.html");
        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", String.valueOf(encodedData.length()));
        conn.setRequestProperty("upgrade-insecure-requests", "1");
        OutputStream os = conn.getOutputStream();
        os.write(encodedData.getBytes());
        System.out.println("gesendet");
    }

Scheint jedoch nicht zu passen, da das Gerät die Daten des Posts nicht übernimmt.
 
Da kahm nichts zurück. Habe aber nun eine Version gefunden, die klappt:
Java:
    URL obj = new URL("http://192.168.0.69/index.html");
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);

        // For POST only - START
        con.setDoOutput(true);
        OutputStream os = con.getOutputStream();
        os.write(config.getBytes());
        os.flush();
        os.close();
        // For POST only - END

        int responseCode = con.getResponseCode();
        System.out.println("POST Response Code :: " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) { // success
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // print result
            System.out.println(response.toString());
        } else {
            System.out.println("POST request did not work.");
        }
 
Wenn ich es richtig sehe, ist config bereits korrekt URL-kodiert. Durch
String encodedData = URLEncoder.encode(config, "UTF-8");
werden "&" und "=" aber URL-kodiert, was nicht sein darf.

EDIT:

Kurz zur Erklärung. Es geht um die Übermittlung von key-value-Paaren. Ein solches Paar wird in der Form key=value dargestellt und Paare werden durch ein & voneinander getrennt. Jetzt kann es vorkommen, dass key oder value eben eines dieser Zeichen enthält (oder ein anderes Zeichen, das z. B. in einer URL nicht vorkommen darf). Daher müssen sowohl key als auch valueentsprechend kodiert werden.
 
Zuletzt bearbeitet:

Zurück
Oben