tra l'altro oggi JSESSIONID non compare più nell'url... quindi il metodo di recuperarlo da lì è da escludere...
io ho questo codice:
Function GetPageWithCookie(ByVal PageUrl As String) As String
Dim sb As New System.Text.StringBuilder
Try
Dim request As HttpWebRequest = WebRequest.Create(PageUrl)
Dim newContainer As New Net.CookieContainer
newContainer.Add(CookieList)
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 CookieList
If pCookie.Name = rCookie.Name Then
pCookie.Value = rCookie.Value
Found = True
Exit For
End If
Next
If Not Found Then
CookieList.Add(rCookie)
End If
Next
Using reader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
sb.Append(reader.ReadToEnd)
End Using
Return sb.ToString
Catch ex As Exception
Return ""
Finally
sb = Nothing
End Try
End Function
che per funzionare... funziona!
ma rimane impossibile (per me) far capire al sito che ho il cookie adatto e farmi accettare il captcha che invio con:
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
GetPageWithCookie("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it")
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim GEOPORTALE As New WebClient
PictureBox1.Image = CreateImageFromBytes(GEOPORTALE.DownloadData("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it"))
Dim Request As HttpWebRequest
Try
Request = HttpWebRequest.Create(String.Format("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}", InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA")))
Request.CookieContainer.Add(CookieList)
Dim Response As HttpWebResponse = Request.GetResponse() 'alla seconda chiamata si blocca qui
Dim Reader As IO.Stream = Response.GetResponseStream()
Dim Buffer(8127) As Byte
Dim BytesRead As Int32
Dim stringa As String
stringa = System.Text.Encoding.Default.GetString(Buffer)
BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
Do While BytesRead > 0
BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
stringa = System.Text.Encoding.Default.GetString(Buffer)
Loop
Response.Close()
Response.Dispose()
Reader.Close()
If Not stringa.Contains("{""result"":true,""token"":""") Then
MessageBox.Show("CAPTCHA e rrato o sessione non valida, riprovare ad inserire il captcha o richiederne uno nuovo", "ATTENZIONE")
Return
Else
stringa = stringa.Replace("{""result"":true,""token"":""", String.Empty)
stringa = stringa.Replace(""",""message"":""""}", String.Empty)
MessageBox.Show(stringa)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
tra l'altro con le innumerevoli correzioni/riscritture mi sa che ho fatto casino... mi da nullreference su
Request.CookieContainer.Add(CookieList)