openConnection(proxy) costruisce la connessione con una rotta. Impostate il metodo HTTP e il corpo sulla HttpURLConnection restituita prima di avviare la richiesta:

Proxy route = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
HttpURLConnection connection = (HttpURLConnection)
    URI.create("http://www.example.com/submit").toURL().openConnection(route);

try {
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(15000);
    connection.setRequestMethod("POST");
    connection.setDoOutput(true);
    connection.setRequestProperty("Content-Type",
        "application/x-www-form-urlencoded; charset=UTF-8");

    byte[] form = "message=hello+proxy".getBytes(StandardCharsets.UTF_8);
    try (OutputStream out = connection.getOutputStream()) {
        out.write(form);
    }

    int status = connection.getResponseCode();
    System.out.println(status);
    InputStream response = status >= 400
        ? connection.getErrorStream() : connection.getInputStream();
    if (response != null) response.close();
} finally {
    connection.disconnect();
}

L'esempio invia un piccolo modulo, stampa il suo stato e chiude un flusso di risposta inutilizzato. Sostituite quest'ultimo passaggio con la gestione del corpo della risposta dell'applicazione quando il corpo serve.

Il nome host e la porta del proxy appartengono a route. Per un test pubblico di modulo consentito senza account proxy, scegliete l'indirizzo HTTP da una voce della lista di proxy HTTP. L'URL resta l'endpoint del modulo. Per valori di modulo dinamici, usate URLEncoder per codificare ogni valore invece di unire input non sottoposto a escape con segni di uguale e ampersand.

Il flusso di output invia i byte preparati. Leggete lo stato dopo la scrittura e la chiusura, poi scegliete il flusso di risposta normale o quello di errore secondo necessità. Una risposta HTTP non riuscita può contenere contenuto di errore utile dell'applicazione o del proxy.

Articoli correlati