Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88

    [VB.NET]Leggere una singola linea dal source di una pagina

    So che il titolo non rende benissimo l'idea, ma adesso che ho più spazio, vi espongo la mia richiesta:
    è possibile, mediante una risorsa del namespace "System.Net", leggere una singola linea(o comunque una piccola quantità di bytes, utili peruna mia paragonazione in termini di stringhe)da una pagina web, senza doverla scaricare tutta in memoria?
    Il mio scopo in pratica, sarebbe evitare di usare il metodo:
    codice:
    Dim WC As New Net.WebClient
    Dim str As String = WC.DownloadString("URL")
    poichè ci mette "tanto" tempo. Metto tra parentesi perché di per se non ci mette niente, ma quando si tratta di scaricare e paragonare 649 files in un ciclo iterativo, beh...

    Grazie per la vostra attenzione
    --> Mi piace tantissimo questa faccina : D

  2. #2
    Usa il metodo OpenRead per ottenere un oggetto Stream da cui puoi leggere i dati come ti pare (per leggere solo un tot di byte usa il metodo Stream.Read, se vuoi leggere una riga passa lo Stream ad un TextReader e usa il suo metodo ReadLine).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88
    Ho provato in questo modo:
    codice:
            Dim request As String = "URI"
            Dim myStream As Stream = WC.OpenRead(request)
            Dim sr As New StreamReader(myStream)
            Dim str As String = Nothing
            'uso il metodo sr.Read perché è lo stesso che usare un ciclo For, e così è anche più carino e gestibile.
            str &= Chr(sr.Read())
            str &= Chr(sr.Read())
            'Per sicurezza rilascio tutti gli elementi
            sr.Dispose()
            'Chiudo lo stream.
            sr.Close()
    La velocità non è aumentata significativamente...non si può fare in modo tale che, durante la richiesta di WC.OpenRead, legga dallo stream soltanto 2 Chars?

  4. #4
    Il punto è che credo che il grosso del tempo si perda nello stabilire la connessione (risolvere il nome DNS, effettuare la richiesta HTTP) più che nell'effettivo download dei dati, che, usando lo stream in questa maniera, dovrebbe essere comunque ridotto al minimo indispensabile.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88
    Originariamente inviato da MItaly
    Il punto è che credo che il grosso del tempo si perda nello stabilire la connessione (risolvere il nome DNS, effettuare la richiesta HTTP) più che nell'effettivo download dei dati, che, usando lo stream in questa maniera, dovrebbe essere comunque ridotto al minimo indispensabile.
    Ecco, ho risolto.
    Proprio per quello che tu mi dici(la risolta del DNS e la richiesta HTTP), il processo diventa lungo. Ma se io invece di usare prima lo Stream, chiuderlo, e poi ri-fare praticamente il procedimento con WC.DownloadString("URI"), leggo lo stream fino alla fine, lo assegno, e poi lo chiudo?
    E' quello che ho fatto, utilizzando il ByRef in una funzione:

    codice:
        Private Function IsDescription(ByVal myStream As Stream, ByVal str1 As String, ByRef str2 As String) As Boolean
            Dim request As String = "URI" & str1
            myStream = WC.OpenRead(request)
            Dim sr As New StreamReader(myStream)
            str2 = sr.ReadToEnd().Replace("<pre>", Nothing).Replace("</pre>", Nothing)
            sr.Dispose()
            sr.Close()
            Dim bool As Boolean = False
            If str2.StartsWith("==") Then bool = True Else bool = False
            Return bool
        End Function
    Ecco, e poi nel thread chiamante, scrivo i dati di str2 su di un file
    Grazie ancora per il supporto, e spero che la soluzione vi sia andata a genio :P

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.