Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2006, 10:55   #1
iMpRoBaBiL3
Member
 
Iscritto dal: Apr 2004
Messaggi: 206
[JAVA] Probelma autenticazione ed accesso a file

Ciao a tutti, vi espongo velocemente il mio problema: sto creando una piccola applicazione che si dovrebbe connettere ad un sito, autenticarsi e scaricare un file xml. Supponendo che il file si trovi all'indirizzo http://www.nomesito.com/xml/nome_file.php (anche se ha estensione .php è di fatto un xml... non vorrei che fosse questo il problema)

Ho creato un metodo per settarmi le variabili che utilizzerò per la connessione

Codice:
    protected void populateURLValues(String textURL) throws IOException {

        URL url = new URL(textURL);

        uri = url;

        host = url.getHost ();

        port = url.getPort ();

        if (port == -1)

            port = 80;

        file = url.getFile();

    }
Avevo pensato di creare una classe che estende l'Authenticator di java

Codice:
    public class MyAuthenticator extends Authenticator {

    	protected PasswordAuthentication getPasswordAuthentication() {

	        return new PasswordAuthentication("mioNome", "miaPassword".toCharArray() );

        }

    }
Attualmente il mio metodo di connessione è fatto così:

Codice:
    protected Socket connect () throws IOException {

        System.err.println ("Connessione a " + host + ":" + port + "...");

	Authenticator.setDefault(new MyAuthenticator()); //Possibile errore

        Socket socket = new Socket(host, port);

        System.err.println ("Connessione avvenuta.");

        BufferedOutputStream buffOut = new BufferedOutputStream (socket.getOutputStream ());

        out = new DataOutputStream (buffOut);

        in = new DataInputStream (socket.getInputStream ());

        return socket;

    }

mentre il metodo per leggere il file (per quel che serve mi basta leggerlo)

Codice:
    protected void getFile() throws IOException {

        System.err.println ("Richiesta del file " + file + " inviata...");

        out.writeBytes ("GET " + file + " HTML/1.0\r\n\r\n"); //Probabile errore

        out.flush ();

        System.err.println ("Ricezione dati...");

        String input ;

        while ((input = in.readLine ()) != null)

            System.out.println (input);

    }

Ma quello che ricevo quando cerco di leggere il file è la seguente risposta:

HTTP/1.1 404 Not Found
Date: XXXX
Server: Apache/2.0.51 (Fedora)
Content-Length: 304
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /xml/nome_file.php was not found on this server.</p>
<hr />
<address>Apache/2.0.51 (Fedora) Server at xxxxxxxxxxxx Port 80</address>
</body></html>


Mi dite cosa sbaglio ad impostare e come dovrei farlo correttamente? Ho messo due possibili/probabili cause di errore che penso di aver individuato, ma non so come eventualmente risolverle.

Riprendetemi pure se ho scritto niubbiate ^_^
iMpRoBaBiL3 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2006, 11:32   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da iMpRoBaBiL3
Mi dite cosa sbaglio ad impostare e come dovrei farlo correttamente? Ho messo due possibili/probabili cause di errore che penso di aver individuato, ma non so come eventualmente risolverle.
Ciao, guarda ... non sono ancora molto esperto del package java.net e quindi non vorrei dire fesserie.

Mi sembra però che un Authenticator viene usato dalla classe URLConnection e non da un semplice socket. Questo perché un socket non ha alcuna conoscenza della autenticazione HTTP.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2006, 11:52   #3
iMpRoBaBiL3
Member
 
Iscritto dal: Apr 2004
Messaggi: 206
Quote:
Originariamente inviato da andbin
Ciao, guarda ... non sono ancora molto esperto del package java.net e quindi non vorrei dire fesserie.

Mi sembra però che un Authenticator viene usato dalla classe URLConnection e non da un semplice socket. Questo perché un socket non ha alcuna conoscenza della autenticazione HTTP.

Ho riscritto il metodo connect() con i tuoi suggerimenti

Codice:
    protected void connect () throws IOException {

        System.err.println ("Connessione a " + host + ":" + port + "...");

        URLConnection connection = uri.openConnection();

        connection.setDoOutput(true);

        Authenticator.setDefault(new MyAuthenticator());

        System.err.println ("Connessione avvenuta.");

        BufferedOutputStream buffOut = new BufferedOutputStream (connection.getOutputStream ());

        out = new DataOutputStream (buffOut);

        in = new DataInputStream (connection.getInputStream ());

        getPage ();

    }
Ma mi restituisce semplicemente la homepage senza autenticarsi...
iMpRoBaBiL3 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2006, 12:39   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Ho fatto una prova, giusto anche per cultura mia personale , con questo codice:
Codice:
import java.io.*;
import java.net.*;

public class ProvaAuth
{
    public static void main (String[] args)
    {
        try
        {
            Authenticator.setDefault (new MyAuthenticator ());

            URL url = new URL ("...url...");
            URLConnection urlconn = url.openConnection ();

            InputStreamReader isr = new InputStreamReader (urlconn.getInputStream ());
            BufferedReader br = new BufferedReader (isr);

            String str;

            while ((str = br.readLine ()) != null)
            {
                System.out.println (str);
            }

            br.close ();
        }
        catch (Exception e)
        {
            e.printStackTrace ();
        }
    }
}

class MyAuthenticator extends Authenticator
{
    protected PasswordAuthentication getPasswordAuthentication ()
    {
        return new PasswordAuthentication ("...user...", "...password...".toCharArray ());
    }
}
Per provarlo non ho avuto (fortunatamente) problemi. Ho giusto una casella di posta che ha la webmail e questa webmail mi chiede prima di tutto l'autenticazione HTTP (è l'unica tra tutte le caselle di posta che possiedo che funziona in questo modo).

E a me funziona senza problemi, la pagina generata mi dice appunto che sono loggato.

Mi sta venendo un dubbio per il tuo problema ... non è che confondi l'autenticazione HTTP con una qualunque altra autenticazione fatta tramite il classico form di login nella pagina web???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2006, 15:35   #5
iMpRoBaBiL3
Member
 
Iscritto dal: Apr 2004
Messaggi: 206
Mmm mi sa che è proprio come hai detto tu... a me serve autenticarmi su un sito avente la classica form di login... perdona l'equivoco ma di questo proprio non me ne intendo , essendo la prima volta che sto cercando di fare una cosa simile ... mi sai consigliare qualcosa che può fare al caso mio ?
iMpRoBaBiL3 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2006, 16:33   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da iMpRoBaBiL3
Mmm mi sa che è proprio come hai detto tu... a me serve autenticarmi su un sito avente la classica form di login... perdona l'equivoco ma di questo proprio non me ne intendo , essendo la prima volta che sto cercando di fare una cosa simile ... mi sai consigliare qualcosa che può fare al caso mio ?
Ahhh, allora è come pensavo.

Comunque si può sicuramente fare lo stesso ... è solo un po' più complicato.
Diciamo che dovresti "mimare" quello che farebbe un browser. Su una pagina web hai un form (ci sarà quindi un tag <form>). Del form puoi sapere sicuramente il suo "action" (l'url che richiede all'invio) e il "method" (get o post). Al 99,99% un form di login è sicuramente con il post.

Quindi la procedura sarebbe, a parole, la seguente:
1) Esegui un POST ad un certo URL, passando i dati richiesti (come se fosse il browser a prendere i dati dal form e ad inviarli).
2) La nuova pagina molto probabilmente gestisce le sessioni, quindi è molto probabile che ti invii un cookie che ti devi tenere da parte.
3) Le eventuali successive richieste a pagine seguenti (se devi fare altro) le devi richiedere inviando anche il cookie.

In pratica devi tenere "su" la sessione mantenendo i cookie per tutto il tempo che fai richieste al server.

In Java non saprei bene come fare questa cosa ... non l'ho mai fatta. Avevo fatto in passato una cosa del genere ma in Perl.
Ci penso un po' e mi documento, poi magari ti faccio sapere.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
GPU esterne: PCI-SIG porta le prestazion...
Per Lenovo i giocatori sono ricchi: Legi...
Polaroid lancia la nuova stampante Hi-Pr...
Da Kyndryl un gemello digitale per il di...
La Cina si prepara a una nuova missione ...
Climatizzatore Inverter A++ con Wi-Fi a ...
NZXT Flex, lo 'scandalo' del PC gaming a...
Robot lavavetri in offerta su Amazon: EC...
Attenti a questo update fake di Windows ...
NIO chiede la standardizzazione di batte...
Da 80 mesi-uomo a poche ore: l'AI cambia...
In 2 settimane senza social il cervello ...
Amazon top 7 di oggi: 2 portatili intere...
SteamGPT trapela dal client Steam: ecco ...
Boom clamoroso per questo piccolo produt...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v