59 messaggi dal 21 luglio 2006
Ho il seguente codice per scaricare il contenuto HTML di una pagina web:

Public Function Scarica() As String

Dim wreq As WebRequest = WebRequest.Create(m_strURL)
wreq.Timeout = 1500
Try
Dim wres As WebResponse = wreq.GetResponse()

Dim iBuffer As Integer = 0

Dim buffer(128) As [Byte]

Dim stream As Stream = wres.GetResponseStream()

iBuffer = stream.Read(buffer, 0, 128)

Dim strRes As New StringBuilder("")

While iBuffer <> 0

strRes.Append(Encoding.ASCII.GetString(buffer, 0, iBuffer))

iBuffer = stream.Read(buffer, 0, 128)

End While

Return strRes.ToString()
Catch
Return "False"
End Try
End Function

Funzione che ha sempre funzionato, ma ora è stato modificato l'indirizzo (URL) da

http://www........ a https://wwwt..........

è non funziona più, la causa è dovuta al nuovo protocollo criptato?
Come potrei modificare il codice per gestire questa nuova situazione, se è possibile?
Grazie
Giorgio

Giorgio
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Giorgio,
non funziona più, la causa è dovuta al nuovo protocollo criptato?

Funziona anche con https ma potrebbe essere che il server sta usando un certificato non valido (es. scaduto o autofirmato, cioè emesso da una certification authority non riconosciuta).
Prova a visitare l'url HTTPS nel browser: hai il tipico errore di "sito non sicuro" come quello che vedi qui?
Riporta esattamente l'errore che vedi nel browser, da questo dipende la soluzione.

Nel mentre, semplifica il tuo codice, dato che quel bloccone non è necessario. Esiste un apposito metodo DownloadString della classe WebClient per ottenere il contenuto di una risposta.
Public Function Scarica() As String
  Try 
    Using client As New WebClient()
      Return client.DownloadString(address);
    End Using
  Catch 
    Return "False"
  End Try
End Function


ciao,
Moreno

Enjoy learning and just keep making
59 messaggi dal 21 luglio 2006
Grazie Moreno per la risposta,
il sito è il seguente:
https://wwwt.agenziaentrate.gov.it/servizi/UfficiProvinciali/archivio.htm?iduff=OR1&r=Sardegna&pr=Oristano
e non da nessuna segnalazione.
Quello che m'interessa leggere ed acquisire dalla suddetta pagina web è una data, precisamente quella presente nella seguente stringa:
"Ultimo aggiornamento: 05-FEB-18"
Puoi consigliarmi altra soluzione?

Giorgio
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Giorgio, sì, infatti il certificato è ok e ti posso confermare che con il metodo DownloadString riesco a ottenere il contenuto della pagina.
Tu che errore ottieni, esattamente? Sei sicuro che sia all'interno della funzione Scarica e non altrove?

Dopo che hai ottenuto il contenuto della pagina, puoi estrarre informazioni da essa usando un'espressione regolare o i metodi Index e Substring delle stringhe.
Attenzione perché non tutti i siti gradiscono che le loro pagine siano lette da strumenti automatici come quello che stai realizzando. Vedi se nel sito dell'agenzia delle entrate ci sono controindicazioni.

ciao,
Moreno

Enjoy learning and just keep making
59 messaggi dal 21 luglio 2006
Ciao Moreno,
mi da il seguente errore:
Eccezione first-chance di tipo 'System.Net.WebException' in System.dll

Dopo che ho ottenuto la pagina o meglio quando riuscivo ad ottenerla, per estrarre la data ho scritto il seguente codice:
Dim Testo As String = _
System.Text.RegularExpressions.Regex.Replace( _
Scarica(URL), "<[^>]*>", "")

Dim posizT As Integer = Testo.LastIndexOf("Download TAF Ultimo aggiornamento:")
Dim dataggUltT As Date = Convert.ToDateTime(Testo.Substring(posizT + 40, 9))
E' possibile che il problema sia dovuto al S.O. Windows XP sp. 3?

Grazie
Giorgio
Modificato da gsprogetti il 05 marzo 2018 10.36 -

Giorgio
11.886 messaggi dal 09 febbraio 2002
Contributi

Eccezione first-chance di tipo 'System.Net.WebException' in System.dll


Ok, dovresti postare anche il messaggio dell'eccezione (o il messaggio della sua inner exception). In questo modo è più facile capire dov'è il problema.


possibile che il problema sia dovuto al S.O. Windows XP sp. 3?

Non so, è un sistema operativo non più supportato da anni, può darsi che non conosca la certification authority che ha emesso il certificato dell'agenzia delle entrate (DigiCert).

ciao,
Moreno

Enjoy learning and just keep making
59 messaggi dal 21 luglio 2006
Il messaggio dell'eccezione è il seguente:
Timeout dell'operazione
Ciao
Giorgio

Giorgio
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Giorgio,
stai usando un codice che ti ho fornito per scaricare il contenuto della pagina?

La classe WebClient ha un timeout di 100 secondi, mi sembra difficile che il sito non risponda entro quel tempo. Quando ci ho provato io la risposta è stata quasi immediata. Hai modo di provare il codice su un altro PC?

ciao,
Moreno
Modificato da BrightSoul il 05 marzo 2018 19.01 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.