Salve, sto facendo x mia comodità un programmino che mi dica in un click il mio saldo postepay...
Ho alcuni problemi..
vi posto il codice e vi spiego:
Questa le funzioni che uso:
codice:
Public iCookie As New CookieCollection
Public newContainer As New Net.CookieContainer
Function GetPageWithCookiePOST(ByVal PageUrl As String, ByVal postato As String) As String
Dim sb As New System.Text.StringBuilder
Try
Dim request As HttpWebRequest = WebRequest.Create(PageUrl)
request.Method = "POST"
request.AllowAutoRedirect = True
request.ContentType = "application/x-www-form-urlencoded"
Dim encoding As New System.Text.ASCIIEncoding
Dim arByte As Byte() = encoding.GetBytes(postato)
request.ContentLength = arByte.Length
Dim newStream As IO.Stream = request.GetRequestStream
newStream.Write(arByte, 0, arByte.Length)
newStream.Close()
newContainer.Add(iCookie)
request.CookieContainer = newContainer
Dim response As HttpWebResponse = request.GetResponse()
For Each rCookie As Cookie In CType(response, Net.HttpWebResponse).Cookies
Dim Found As Boolean = False
For Each pCookie As Cookie In iCookie
If pCookie.Name = rCookie.Name Then
pCookie.Value = rCookie.Value
Found = True
Exit For
End If
Next
If Not Found Then
iCookie.Add(rCookie)
End If
Next
Using reader As StreamReader = New StreamReader(response.GetResponseStream())
sb.Append(reader.ReadToEnd)
End Using
Return sb.ToString
Catch ex As Exception
Return ""
Finally
sb = Nothing
End Try
End Function
Function GetPageWithCookie(ByVal PageUrl As String) As String
Dim sb As New System.Text.StringBuilder
Try
Dim request As HttpWebRequest = WebRequest.Create(PageUrl)
request.AllowAutoRedirect = True
newContainer.Add(iCookie)
request.CookieContainer = newContainer
Dim response As HttpWebResponse = request.GetResponse()
For Each rCookie As Cookie In CType(response, Net.HttpWebResponse).Cookies
Dim Found As Boolean = False
For Each pCookie As Cookie In iCookie
If pCookie.Name = rCookie.Name Then
pCookie.Value = rCookie.Value
Found = True
Exit For
End If
Next
If Not Found Then
iCookie.Add(rCookie)
End If
Next
Using reader As StreamReader = New StreamReader(response.GetResponseStream())
sb.Append(reader.ReadToEnd)
End Using
Return sb.ToString
Catch ex As Exception
Return ""
Finally
sb = Nothing
End Try
End Function
Ora io eseguo queste richieste e riesco a loggarmi:
codice:
Dim p1 As String = GetPageWithCookiePOST("https://bancopostaonline.poste.it/bpol/CARTEPRE/Logon.fcc", "USER=" & Web.HttpUtility.UrlEncode("XXXXXXXX", System.Text.Encoding.Default) & "&Password=" & Web.HttpUtility.UrlEncode("XXXXXXX", System.Text.Encoding.Default) & "&btnSubmit=Invia&target=" & Web.HttpUtility.UrlEncode("/bpol/cartepre/RedirectionGateway.ashx?type=SMACCESS", System.Text.Encoding.Default) & "&device_id=" & Web.HttpUtility.UrlEncode("[[[INACCESSIBLE]]]", System.Text.Encoding.Default))
Dim p4 As String = GetPageWithCookie("https://bancopostaonline.poste.it/bpol/cartepre/servizi/cartapostepay/cartapostepay.aspx?pnlstart=listamovimenti")
Per inviare il codice della mia postepay uso questo codice:
codice:
Dim vs As Match = Regex.Match(p4, "<input type=" & virgolette & "hidden" & virgolette & " name=" & virgolette & "__VIEWSTATE" & virgolette & "[^>]+", RegexOptions.IgnoreCase)
Dim valorevs As Match = Regex.Match(vs.Groups.Item(0).Value, "value=" & virgolette & "([^" & virgolette & "]+)", RegexOptions.IgnoreCase)
Dim valVS As String = valorevs.Groups.Item(1).Value
Dim p5 As String = GetPageWithCookiePOST("https://bancopostaonline.poste.it/bpol/cartepre/servizi/cartapostepay/cartapostepay.aspx?pnlstart=listamovimenti", Web.HttpUtility.UrlEncode("CartaPostePaySelezionaCarta1:btnEsegui", System.Text.Encoding.Default) & "=Esegui&" & Web.HttpUtility.UrlEncode("CartaPostePaySelezionaCarta1:txtNrCartaPre", System.Text.Encoding.Default) & "=XXXXXXXXXXXX&" & Web.HttpUtility.UrlEncode("CartaPostePaySelezionaCarta1:cmbLista", System.Text.Encoding.Default) & "=40&" & Web.HttpUtility.UrlEncode("__VIEWSTATE=", System.Text.Encoding.Default) & Web.HttpUtility.UrlEncode(valVS, System.Text.Encoding.Default))
Ovvero dalla richiesta p4 ottengo il __VIEWSTATE e lo invio insieme al resto, però quello che ottengo è il sorgente della pagina di login anziche quello della lista movimenti.
Soluzioni?