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

    java url con autenticazione

    Ciao a tutti! Ho la necessità di leggere tramite java il contenuto di una pagina asp.
    utilizzo la classe URL

    String un = "http://pagina.Asp";
    url = new URL (un);
    stream = new BufferedReader (new InputStreamReader (url.openStream()));

    Il problema e' che ricevo un errore

    java.io.IOException: Server returned HTTP response code: 401 for URL: http://pagina.Asp

    La pagina risiede su un dominio che richiede l'autenticazione....
    quindi come potrei passare tale autenticazione con java?

    ciao grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: java url con autenticazione

    Originariamente inviato da marasma1
    quindi come potrei passare tale autenticazione con java?
    Devi usare la classe java.net.Authenticator. Devi estenderla in modo da fare l'override del metodo getPasswordAuthentication. Ecco un esempio:

    codice:
    public class MiaAutenticazione extends Authenticator
    {
        protected PasswordAuthentication getPasswordAuthentication ()
        {
            return new PasswordAuthentication ("nomeutente", "password".toCharArray ());
        }
    }
    nomeutente e password li ho messi come strighe literal, ma nulla ti vieta di prenderli da dove ti pare.

    Poi prima di aprire la connessione all'URL fai:

    codice:
    Authenticator.setDefault (new MiaAutenticazione ());
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Vi posto il codice :

    import java.net.*;
    import java.io.*;

    public class ReadHtml{

    public static void main(String[] arg)
    {
    String un= "http://pagina.asp";
    System.out.println("URL: "+un);

    URL url;
    BufferedReader stream;

    try {
    Authenticator.setDefault (new MiaAutenticazione ());
    url = new URL (un);
    try {

    stream = new BufferedReader (new InputStreamReader (url.openStream()));
    String l;
    try
    {
    while ((l=stream.readLine())!=null)
    {
    System.out.println(l);
    };
    }catch (IOException e){System.out.println("Errore di lettura.");};
    }catch (IOException e){
    e.printStackTrace();
    stream=null;
    System.exit(0);
    };
    }catch (MalformedURLException e){};

    }
    }

    class MiaAutenticazione extends Authenticator
    {
    protected PasswordAuthentication getPasswordAuthentication ()
    {
    return new PasswordAuthentication ("utente", "password".toCharArray());
    }
    }

    Eseguendo lo script ricevo errore:

    java.net.ProtocolException: Server redirected too many times (20)
    at sun.net.http://www.protocol.http.HttpURLConn...getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at ReadHtml.main(ReadHtml.java:22)

  4. #4

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da marasma1
    Eseguendo lo script ricevo errore:

    java.net.ProtocolException: Server redirected too many times (20)
    at sun.net.http://www.protocol.http.HttpURLConn...getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at ReadHtml.main(ReadHtml.java:22)
    Sembra che vada in loop. La pagina ASP probabilmente fa un redirect HTTP su se stessa (per qualche motivo che non so, esempio: autenticazione fallita, la pagina ASP è scritta male, o c'è un altro problema).

    Controlla meglio. Facendo la prova "a mano" con un browser, funziona??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Si funziona... ma e' una pagina che ha l'autorefresh...

    <head>
    <title>titolo</title>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
    <META http-equiv=Refresh content=60>
    <script src="../../../Funzioni.Js"></script>
    </head>

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da marasma1
    Si funziona... ma e' una pagina che ha l'autorefresh...

    <head>
    <title>titolo</title>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
    <META http-equiv=Refresh content=60>
    <script src="../../../Funzioni.Js"></script>
    </head>
    Beh, vuol solo dire che lo user-agent dovrebbe ricaricare la pagina ogni 60 secondi.

    Comunque le classi di Java per il networking non gestiscono questo tipo di refresh. Questa è una funzionalità che deve essere implementata dallo "user-agent", cioè da chi poi legge/interpreta/usa (o visualizza) la pagina. In pratica sei tu che dovresti leggere la pagina, esaminarla, vedere se ha un http-equiv con valore "Refresh", estrarre il content, ecc....
    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.