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

    [VB.NET] Verificare esistenza pagina web

    Ciao a tutti, avrei un piccolo problema con un programma in sviluppo, vi spiego la funzione di questo programma:

    1) Inserisco l'url di un sito es http://html.it
    2)Carico alcune stringhe da un file .txt
    3)Verifico se UrlSito&StringaCaricata esiste
    ---3A)Se esiste allora fai questo
    ---3B)Se non esiste fai quest'altro.

    Il problema è il passaggio 3, supponendo che le stringhe caricate siano rispettivamente /home, /forum, /blog, /index.php /ciaocomeva.html ecc

    come faccio a verificare se esiste la pagina http://html.it/home o http://html.it/index.php ecc

    Non riesco a trovare una via d'uscita normale.... Avevo pensato di analizzare cosa contiene la pagina web e nel caso in cui avesse contenuto le stringhe "Impossibile", "visualizzare" e "pagina" l'avrei potuta classificare come una pagina inesistente, però credo che capiate anche voi che è un metodo non sempre affidabile e anche un po' stupido. Ringrazio in anticipo.

    Edit: come da manuale, appena postata la domanda si accende la lampadina -.-
    se provassi qualcosa col ping? funziona con le pagine? D:

    Codice PHP:
     Try
                
    My.Computer.Network.Ping("google.it")
                
    MsgBox("Esiste")
            Catch 
    ex As System.Net.NetworkInformation.PingException
                MsgBox
    ("Non esiste")
            
    End Try 
    Con le pagine non funziona, il codice qui sopra serve solo per verificare l'esistenza di siti si dai avete capito

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il ping non c'entra. L'unico modo è esaminare la pagina che carichi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    ciao, usa HttpWebRequest e HttpWebResponse, attraverso HttpStatusCode lavori facile facile (sempre se non va in errore prima)...

    VB
    codice:
    Private Shared Function siteUp(ByVal url As String, ByVal credenziali As ICredentials) As Boolean
            Dim result As Boolean = False
            Try
                Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
                request.Credentials = credenziali
                request.Method = "GET"
                Using response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
                    result = Not (response Is Nothing OrElse response.StatusCode <> HttpStatusCode.OK)
                End Using
            Catch e As Exception
                result = False
            End Try
            Return result
        End Function

    C#
    codice:
    private static bool siteUp(string url, ICredentials credenziali)
            {
                bool result = false;
                try
                {
                    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                    request.Credentials = credenziali;
                    request.Method = "GET";
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        result = !(response == null || response.StatusCode != HttpStatusCode.OK);
                    }
                }
                catch (Exception e)
                {
                    result = false;
                }
                return result;
            }
    e lo usi così :

    VB
    codice:
    'in caso servano le credenziali usi :
            'NetworkCredential nc = new NetworkCredential("User", "password");
            'diversamente :
            Dim nc As NetworkCredential = DirectCast(CredentialCache.DefaultCredentials, NetworkCredential)
            Dim result As Boolean = siteUp("http://www.html.it/", nc)
            result = siteUp("http://www.html.it/pippo.lll", nc)
    C#
    codice:
    //in caso servano le credenziali usi :
    //NetworkCredential nc = new NetworkCredential("User", "password");
    //diversamente :
                NetworkCredential nc = (NetworkCredential)CredentialCache.DefaultCredentials;
                bool result = siteUp("http://www.html.it/", nc);
                result = siteUp("http://www.html.it/pippo.lll", nc);
    EDIT :
    W i traduttori di codice... in 0 secondi

  4. #4
    @U235

    Grazie la tua soluzione funziona, peccato che ci mette tanto a verificare se esiste o meno. (sarà per la mia linea immonda?) In ogni caso grazie mille per la soluzione. Altri consigli sono ben accetti.

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da supacush7
    @U235

    Grazie la tua soluzione funziona, peccato che ci mette tanto a verificare se esiste o meno. (sarà per la mia linea immonda?) In ogni caso grazie mille per la soluzione. Altri consigli sono ben accetti.
    Ciao, da me ci mette circa lo stesso tanto che ci mette un browser a caricare la stessa pagina completa...
    Mi spiace, ma più di caricare la pagina per vedere se va non saprei come fare

    comunque figurati


  6. #6
    Utente di HTML.it L'avatar di robott
    Registrato dal
    Apr 2009
    Messaggi
    20
    Ciao!

    Penso tu possa risolvere il problema della velocità utilizzando invece di una GET, un richiesta di tipo HEAD:

    codice:
    request.Method = "HEAD";
    Permette al protocollo di dialogare con il server senza che questo invii effettivamente il carico utile del pacchetto, ma ottieni le intestazioni equivalenti dei pacchetti che ti permettono di riscontrare che la pagina esista effettivamente (o se sia stata modificata), senza doverla caricare.

    Per maggiori info ho trovato:

    http://www.eggheadcafe.com/tutorials...d-request.aspx

    http://stackoverflow.com/questions/3...se-status-code


  7. #7
    @robott grazie per l'alternativa, ma la velocità aumenta ma non di molto grazie a tutti, davvero!

  8. #8
    scusate il doppio post, ma ci tenevo a dire una cosa ho riprovato stamattina ed effettivamente usando "HEAD" va più veloce, ieri sera ero poco attento Grazie, problema risolto.

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.