Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [JSP Servlet] controllo prima della sendRedirect

    Ciao, avrei necessità di inviare all'interno di una servlet una HttpServletResponse.sendRedirect. E fin qui niente di preoccupante, inserisco l'url...
    Siccome la pagina chiamata fa parte di un altro "progetto" che può, in alcuni casi di errore restituirmi degli HTTP status codes, è possibile prima di effettuare la sendRedirect "pingare" e intercettare la risposta del server in modo tale da poterne gestire l'eventuale errore ed evitare, in tal modo, la sendRedirect?

    Grazie, spero di essere stato chiaro

  2. #2

    Re: [JSP Servlet] controllo prima della sendRedirect

    Originariamente inviato da maxstorio1
    Ciao, avrei necessità di inviare all'interno di una servlet una HttpServletResponse.sendRedirect. E fin qui niente di preoccupante, inserisco l'url...
    Siccome la pagina chiamata fa parte di un altro "progetto" che può, in alcuni casi di errore restituirmi degli HTTP status codes, è possibile prima di effettuare la sendRedirect "pingare" e intercettare la risposta del server in modo tale da poterne gestire l'eventuale errore ed evitare, in tal modo, la sendRedirect?

    Grazie, spero di essere stato chiaro

    codice:
    ublic class URLReader {
    public static void main(String[] args) throws Exception {
    URL yahoo = new URL("http://www.sourceforge.com");
    BufferedReader in = new BufferedReader(
    new InputStreamReader(
    yahoo.openStream()));
    
    String inputLine;
    
    while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);
    
    in.close();
    }
    http://www.anobii.com/isalreadyinuse

  3. #3
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Se ho capito bene quello che intendi, puoi usare la classe di libreria HttpURLConnection

    http://download.oracle.com/docs/cd/E...onnection.html

    utilizzando poi i metodi getResponseCode() e getResponseMessage() per verificare la risposta. Per quello che vuoi fare sarebbe inoltre più corretto utilizzare il metodo HTTP "head", invece che i tradizionali "get" o "post": nella classe che ti ho segnalato lo puoi specificare tramite il setRequestMethod(String). Verifica però che la servlet che stai "pingando" sia in grado di gestire una richiesta di questo tipo.

  4. #4
    ho fatto un paio di prove utilizzando l'HttpURLConnection

    in sintesi

    codice:
    URL indirizzo = new URL("http://indirizzoIP:8080/progettoX/IHERetrieveSummaryInfo?requestType=XX&ID=111");
    HttpURLConnection conn = (HttpURLConnection) indirizzo.openConnection();
    int rc = conn.getResponseCode(); // mi restituisce l'HTTP server code
    controllo rc, se 200 ok.
    C'è un modo per gestire un eventuale timeout?

  5. #5
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Puoi impostare i timeout sulla classe HttpURLConnection tramite i setConnectTimeout(int) e setReadTimeout(int) definiti nella superclasse URLConnection

  6. #6
    Originariamente inviato da desa
    Puoi impostare i timeout sulla classe HttpURLConnection tramite i setConnectTimeout(int) e setReadTimeout(int) definiti nella superclasse URLConnection

    codice:
    boolean connesso = true;
    try {
        URL indirizzo = new URL("http://indirizzoIP:8080/progettoX....."); 
        HttpURLConnection conn = (HttpURLConnection) indirizzo.openConnection(); 
        conn.setConnectTimeout(5000); // attesa di 5 sec
        conn.connect();
    } catch (IOException e) { 
       connesso = false;
       System.out.println("timeout");
    }
    if (connesso){
      ..........
      ..........
    }

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Il principio di funzionamento mi sembra corretto.
    Per curiosità ho fatto qualche prova... e ho scoperto qualche anomalia sul funzionamento del connectTimeout. In particolare, mi sembra che venga ignorato:
    - se il DNS non riesce a risolvere l'URL specificato (ho provato con http://www.googlea.it);
    - se il DNS risolve l'URL e la connessione va verso una porta in grado di rispondere ad una connessione (ho fatto una prova su vari domini Internet, come google.it sulla porta 80, specificando 1 millisecondo di timeout)
    Funziona correttamente invece se specifico un dominio valido ed una porta (presumibilmente) scorretta, come http://www.google.it:90

    Quasi quasi apro un nuovo post per avere anch'io lumi...

  8. #8
    il setConnectTimeout della HttpURLConnection non è supportato nella versione 1.4.x!!!

    In giro ho trovato qualcosa di simile (Apache Commons Http Client), anche se...

    codice:
    private static String url = "http://www.apache.org/";    
    public static void main(String[] args) {     
        // Create an instance of HttpClient.     
        HttpClient client = new HttpClient();      
        
        // Create a method instance.     
        GetMethod method = new GetMethod(url);      
    
        // Provide custom retry handler is necessary
        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
        
        System.out.println("Setting time out to 10");     
        method.getParams().setSoTimeout(10); // Throws IOException on TimeOut.
    try {
    .....
    .....
    }

    ...il metodo getParams() di GetMethod non è implementato (nella 1.4.x). qualcuno potrebbe darmi qualche dritta...

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Non conosco la libreria che stai utilizzando... però la versione 1.4 è - se non ricordo male - del 2001 ed è stata discontinuata del 2008: non hai modo di migrare almeno a Java 5?

  10. #10
    Originariamente inviato da desa
    Non conosco la libreria che stai utilizzando... però la versione 1.4 è - se non ricordo male - del 2001 ed è stata discontinuata del 2008: non hai modo di migrare almeno a Java 5?
    no

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.