Buongiorno a tutti, poichè gestisco diversi conti online volevo creare un applicativo per gestire solo i saldi sui i diversi conti. Tra i diversi conti tengo Unicredibanca e Postepay che non riesco proprio a capire mi soffermo principalmente su Postepay ma non ci riesco... ho creato questa classe:
Codice PHP:
Imports System.IO
Imports System
.Net
Imports System
.Text

Public Class HTTP

    Dim data 
As New ArrayList

    
Public Sub PostDataAdd(ByVal nome As StringByVal valore As String)
        
data.Add(nome "=" valore)
    
End Sub

    
Public Sub PostDataClear()
        
data.Clear()
    
End Sub

    
Public Sub CookieClar()
        
cookie = New CookieContainer
    End Sub

    Dim cookie 
As New CookieContainer

    
Public Function ReqHTTP_GET(ByVal link As StringOptional ByVal RecuperaValoreSX As String ""Optional ByVal RecuperaValoreDX As String ""Optional ByVal CharInizio As Integer 0)
        
' Creare una richiesta utilizzando un URL che può ricevere un post.
        Dim request As HttpWebRequest = WebRequest.Create(link)
        ' 
Impostare la proprietà Metodo della richiesta POST.
        
request.Method "GET"
        ' Impostare i cookie per un eventuale sessione
        request.CookieContainer = cookie
        ' 
Impostare la proprietà ContentType del WebRequest.
        
request.ContentType "application/x-www-form-urlencoded"
        ' Prendere la risposta.
        Dim response As WebResponse = request.GetResponse()
        ' 
Ottenere il flusso contenente contenuto restituito dal server.
        
Dim dataStream As Stream response.GetResponseStream()
        
' Aprire il flusso con un StreamReader per un facile accesso.
        Dim reader As New StreamReader(dataStream)
        ' 
Leggere il contenuto.
        
Dim responseFromServer As String reader.ReadToEnd()
        
' Chiudere tutti gli stream.
        reader.Close()
        dataStream.Close()
        response.Close()
        If RecuperaValoreSX.Length > 0 Then
            responseFromServer = responseFromServer.Substring(responseFromServer.IndexOf(RecuperaValoreSX, CharInizio), responseFromServer.Length - responseFromServer.IndexOf(RecuperaValoreSX, CharInizio))
            responseFromServer = responseFromServer.Substring(0, responseFromServer.IndexOf(RecuperaValoreDX))
        End If
        Return responseFromServer
    End Function


    Public Function ReqHTTP_POST(ByVal link As String, Optional ByVal RecuperaValoreSX As String = "", Optional ByVal RecuperaValoreDX As String = "", Optional ByVal CharInizio As Integer = 0)
        ' 
Creare una richiesta utilizzando un URL che può ricevere un post.
        
Dim request As HttpWebRequest WebRequest.Create(link)
        
' Impostare la proprietà Metodo della richiesta POST.
        request.Method = "POST"
        ' 
Impostare i cookie per un eventuale sessione
        request
.CookieContainer cookie
        
' Creare dati POST e convertirlo in un array di byte.
        Dim postData As String = ""
        For i As Integer = 0 To data.Count - 1
            If i <> data.Count - 1 Then
                postData += data.Item(i) & "&"
            Else
                postData += data.Item(i)
            End If
        Next
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
        ' 
Impostare la proprietà ContentType del WebRequest.
        
request.ContentType "application/x-www-form-urlencoded"
        ' Impostare la proprietà ContentLength del WebRequest.
        request.ContentLength = byteArray.Length
        ' 
Prendi il flusso di richiesta.
        
Dim dataStream As Stream request.GetRequestStream()
        
' Scrivere i dati per il flusso di richiesta.
        dataStream.Write(byteArray, 0, byteArray.Length)
        ' 
Chiudere l'oggetto che ha permesso di scrivere.
        dataStream.Close()
        ' 
Prendere la risposta.
        
Dim response As WebResponse request.GetResponse()
        
' Ottenere il flusso contenente contenuto restituito dal server.
        dataStream = response.GetResponseStream()
        ' 
Aprire il flusso con un StreamReader per un facile accesso.
        
Dim reader As New StreamReader(dataStream)
        
' Leggere il contenuto.
        Dim responseFromServer As String = reader.ReadToEnd()
        ' 
Chiudere tutti gli stream.
        
reader.Close()
        
dataStream.Close()
        
response.Close()
        If 
RecuperaValoreSX.Length 0 Then
            responseFromServer 
responseFromServer.Substring(responseFromServer.IndexOf(RecuperaValoreSXCharInizio), responseFromServer.Length responseFromServer.IndexOf(RecuperaValoreSXCharInizio))
            
responseFromServer responseFromServer.Substring(0responseFromServer.IndexOf(RecuperaValoreDX))
        
End If
        Return 
responseFromServer
    End 
Function

End Class 
e utilizzato questi passaggi:

Codice PHP:
       Dim x As New HTTP
        x
.ReqHTTP_GET("https://bancopostaonline.poste.it/bpol/cartepre")
        
x.PostDataAdd("USER""xxx")
        
x.PostDataAdd("Password""xxx")
        
x.PostDataAdd("btnSubmit""Invia")
        
x.PostDataAdd("target""/bpol/cartepre/RedirectionGateway.ashx?type=SMACCESS")
        
x.PostDataAdd("device_id""[[[INACCESSIBLE]]]")
        
x.ReqHTTP_POST("https://bancopostaonline.poste.it/bpol/CARTEPRE/Logon.fcc")
        
x.PostDataClear()
        
x.PostDataAdd("__VIEWSTATE""CleUjg (etc)..."'problema
        x.ReqHTTP_POST("https://bancopostaonline.poste.it/bpol/cartepre/servizi/cartapostepay/cartapostepay.aspx?pnlstart=listamovimenti") 
Riesco a fare il login tranquillamente ma non riesco a postare il numero di carta postepay per vedere il saldo... cioè non capisco come posso inviare il mio numero di carta. Posto lo stesso valore del log "__VIEWSTATE" ma niente mi restituisce errore. Consigli?