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

    [VB.NET 2005 Express] Impostare una variabile

    Stò provando un programmino che ho creato e mi ritrovo in questa situazione (per rendere più chiara la situazione però vi pongo un po' della mia teoria del software):
    Problema: è necessario prendere informazioni da un pagina web di un spedizione tramite il tracking number
    Soluzione: utilizzo del metodo WebRequest ed elaborazione del testo html
    Struttura: il form è semplicemente composto da un textbox, un bottone e un richtextbox (per visualizzare il codice html elaborato)

    Adesso cosa accade: quando clicco per la prima volta sul bottone vengono visualizzate correttamente le righe della tabella html contenenti le informazioni, quando invece, clicco per la seconda volta o cambio il tracking number mi genera un errore e controllando nel debub mi sono accorgo che quando clicco la seconda volta le varibili string che contengono il codice html sono uguali a quelle di prima cioè le informazioni non si aggiornano e restano sempre uguale alle info ricevute al primo click... ??? oltre a questo poi non capisco perchè risulta essere un pochino lento a volte il webrequest cmq ... soluzioni?

  2. #2
    Vedere il sorgente aiuterebbe...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da MItaly
    Vedere il sorgente aiuterebbe...
    ...a meno che non sia quello postato qui.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Non credo...
    è necessario prendere informazioni da un pagina web di un spedizione tramite il tracking number
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    codice:
     Dim testohtml As String
        Dim righe As Integer = 0
        Dim textS As String
    
        Private Sub RichiestaWEB()
            'Crea una richiesta per un link
            Dim httprequest As WebRequest = HttpWebRequest.Create("http://javapc.poste.it/trackingPacchi")
            'Se richiesta dal server setta i credenziali d'accesso e post dei dati
            httprequest.Credentials = CredentialCache.DefaultCredentials
            httprequest.Method = "POST"
            httprequest.ContentType = "application/x-www-form-urlencoded"
            Dim encoding As New System.Text.ASCIIEncoding
            Dim postData As String = "Action=ActionTracking&Method=Tracking&SessionID=-1&ldv=" & Me.TextBox1.Text
            '
            'INIZIO PARTE DA CAPIRE...
            '
            Dim arByte As Byte() = encoding.GetBytes(postData)
            httprequest.ContentLength = arByte.Length
            Dim newStream As IO.Stream = httprequest.GetRequestStream
            newStream.Write(arByte, 0, arByte.Length)
            newStream.Close()
            '
            'FINE PARTE DA CAPIRE
            '
            'Prendi la risposta
            Dim risposta As HttpWebResponse = CType(httprequest.GetResponse(), HttpWebResponse)
            'Prendi lo stream contenente gli oggetti mandati dal server
            Dim datastream As Stream = risposta.GetResponseStream
            'Apri un stream usando uno StreamReader for facilità d'accesso
            Dim lettura As New StreamReader(datastream)
            'Leggi il contenuto
            Dim letturahtml As String = lettura.ReadToEnd
            'Chiudi gli stream lettura, datastream, risposta
            lettura.Close()
            datastream.Close()
            risposta.Close()
    
            testohtml = letturahtml
            Dim numerolinea1 As Integer
            Dim numerolinea2 As Integer
            Dim numerofine As Integer
            Dim iniziotable As String = "<table border=""0"" cellspacing=""2"" cellpadding=""3"" width=""100%"">"
            Dim finetable As String = "
    "
            numerolinea1 = InStr(testohtml, iniziotable)
            testohtml = testohtml.Remove(1, numerolinea1 - 1)
            numerolinea2 = InStr(testohtml, finetable)
            numerofine = testohtml.Length.ToString - numerolinea2
            testohtml = testohtml.Remove(numerolinea2 - 1, numerofine)
    
            Dim rtab As String = "<tr bgcolor=""#e8f404"">"
            Dim posizione As Integer = 0
    
    Numero_righe_tabelle:
            posizione = testohtml.IndexOf(rtab, posizione)
            If posizione <> -1 Then
                righe += 1
                posizione += rtab.Length
                GoTo Numero_righe_tabelle
            End If
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            RichiestaWEB()
            textS = Nothing
            textS = testohtml
            Dim charconsiderato As Integer
            Dim parteriga1 As String = "<tr bgcolor=""#e8f404""><td><font size=1>"
            Dim parteriga2 As String = "</font></td><td><font size=1>"
            Dim parteriga3 As String = "</font></td></tr>"
            Dim parteriga4 As String = "  .FINE RIGA " & righe
            charconsiderato = InStr(textS, parteriga1)
            textS = textS.Remove(0, charconsiderato - 1)
            Dim i As Integer = 0
            For i = 0 To righe - 1
                charconsiderato = InStr(textS, parteriga1)
                textS = textS.Insert(charconsiderato - 1 + 42, "INIZIO RIGA" & i + 1 & " $1$")
                textS = textS.Remove(charconsiderato - 1, 42)
                charconsiderato = InStr(textS, parteriga2)
                textS = textS.Insert(charconsiderato - 1, "$2$")
                textS = textS.Remove(charconsiderato + 2, 36)
                charconsiderato = InStr(textS, parteriga2)
                textS = textS.Insert(charconsiderato - 1, "$3$")
                textS = textS.Remove(charconsiderato + 2, 36)
                charconsiderato = InStr(textS, parteriga3)
                textS = textS.Remove(charconsiderato - 1, 21)
                textS = textS.Insert(charconsiderato - 1, "  .FINE RIGA " & i + 1)
            Next
            charconsiderato = InStr(textS, parteriga4)
            Dim uno As Integer = charconsiderato + parteriga4.Length
            Dim due As Integer = textS.Length - uno
            textS = textS.Remove(uno - 1, due - 1)
            RichTextBox1.Text = textS
    Ecco il codice che utilizzo. Come potete vedere poichè sono un novizio mi inserisco i commenti nelle zone di codice che conosco ma c'è anche una parte che non ho capito o meglio che non mi è molto chiaro quindi se vorreste aiutarmi anche in questo non sarebbe una cattiva idea . Comunque grazie in tutti i casi!!!

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.