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 String, ByVal 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 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 = "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(RecuperaValoreSX, CharInizio), responseFromServer.Length - responseFromServer.IndexOf(RecuperaValoreSX, CharInizio))
responseFromServer = responseFromServer.Substring(0, responseFromServer.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?