openConnection(proxy) construit la connexion avec une route. Définissez la méthode HTTP et le corps sur la HttpURLConnection renvoyée avant de lancer la requête :

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'exemple envoie un petit formulaire, imprime son statut et ferme un flux de réponse inutilisé. Remplacez cette dernière étape par la gestion du corps de réponse de l'application lorsque le corps est nécessaire.

Le nom d'hôte et le port du proxy appartiennent à route. Pour un test de formulaire public autorisé sans compte proxy, choisissez l'adresse HTTP d'une entrée de la liste de proxys HTTP. L'URL reste le point de terminaison du formulaire. Pour des valeurs de formulaire dynamiques, utilisez URLEncoder pour encoder chaque valeur au lieu de joindre une entrée non échappée avec des signes égal et des esperluettes.

Le flux de sortie envoie les octets préparés. Lisez le statut après l'écriture et la fermeture, puis choisissez le flux de réponse ordinaire ou celui d'erreur selon le cas. Une réponse HTTP non réussie peut contenir un contenu d'erreur utile de l'application ou du proxy.

Articles similaires