Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Fare il login ad un form con jdk.incubator.httpclient

    Ho realizzato un software in java che utilizzando jdk.incubator.httpclient riesce a connettersi ad internet e a scaricare delle risorse.
    L'obiettivo è connettersi a:
    http://localhost:8080/index.jsp
    digitare le credenziali di accesso e quindi accedere alla pagina route.jsp privata.
    Riesco a collegarmi alla index.jsp ma poi non riesco ad inserire nel form le credenziali di accesso perché il form usa POST e non GET.
    Non posso modificare l'applicazione web.
    Il codice è questo:
    codice:
    package com.company;
    import jdk.incubator.http.HttpClient;
    import jdk.incubator.http.HttpRequest;
    import jdk.incubator.http.HttpResponse;
    import java.net.URI;
    public class Main {
        public static void main(String[] args) {
            try {
                HttpClient client = HttpClient.
                    newBuilder().
                    version(HttpClient.Version.HTTP_2).
                    followRedirects(HttpClient.Redirect.SECURE).
                    build();
                HttpRequest req = HttpRequest.
                    newBuilder().
                    uri(new URI("http://localhost:8080/index.jsp")).
                    GET().
                    build();
                HttpResponse<String> res = client.send(req, HttpResponse.BodyHandler.asString());
                System.out.println(res.body());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    Se scrivete al posto di localhost la URI seguente:
    potete vedere il funzionamento dell'applicazione.
    Il form della mia pagina index.jsp è questo:
    codice:
    <form action="/autenticazione.jsp" method="POST">
    <label>User ID:</label>
    <p class="">
    <input type="text" name="UserID" autofocus value="" class="UserID form-control">
    </p>
    <label>Password:</label>
    <p class="">
    <input type="password" name="Password" value="" class="form-control">
    </p>
    <p><input type="submit" value="Login" class="btn btn-azzurro"></p>
    </form>
    ciao
    Più pratica in futuro...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Ho realizzato un software in java che utilizzando jdk.incubator.httpclient
    Innanzitutto, quale JDK stai usando? La API del HTTP Client è stata introdotta in maniera sperimentale nel JDK 9, poi è stata migliorata nel JDK 10 e infine nel JDK 11 è stata "standardizzata" e spostata nel package java.net.http .
    Quindi ... occhio.

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    ma poi non riesco ad inserire nel form le credenziali di accesso perché il form usa POST e non GET.
    Ora, non conta molto la API di HTTP "client" che stai usando. La questione è che non conosci cosa succede quando un browser invia quel <form> in POST (e che tu devi replicare da codice programmaticamente con la API HTTP client).

    I dati del form devono essere passati ed "encodati" nel body della request secondo il content type application/x-www-form-urlencoded
    Documentati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Io sto usando JDK 10. L'esercitazione richiede:
    Si utilizzi la classe jdk.incubator.httpclient.HttpClient per realizzare un programma che agisca da client ed invii sequenze di richieste al server, così da poter testare tutti i tipi di comportamento.
    Ovviamente quel 'tutti' non va preso alla lettera.
    Se avessi inviato via GET la user e la password per il login sarebbe stato più semplice fare il login perché avrei potuto mettere tutto nella URL ma avrei avuto un'applicazione meno sicura.
    Se sei più pratico con la JDK 11 posso passare alla 11 non è un problema. Come ti dicevo mi accontendo di fare la login.
    Non so proprio come muovermi... è veramente un pasticcio questo punto...
    Più pratica in futuro...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Non so proprio come muovermi... è veramente un pasticcio questo punto...
    Quote Originariamente inviata da andbin Visualizza il messaggio
    I dati del form devono essere passati ed "encodati" nel body della request secondo il content type application/x-www-form-urlencoded
    Ti sei documentato??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.