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

    [vb.net] Post a pagine web

    Vorrei postare ad un sito diverse pagine, cioè in sostanza prendere informazioni da un sito con account: prima di prendere ciò che mi serve in questo caso devo fare il login... come eseguo una serie di post prima di arrivare alla pag che mi occorre?

    Finora io ho usato questo:

    'Crea una richiesta per un link
    Dim httprequest As WebRequest = HttpWebRequest.Create("http://wap.vizrea.com/signin.aspx")
    '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 = "txtUserName=" & Me.username.Text & "&txtPassword=" & Me.password.Text & "&btnSubmit=Sign+In"
    '
    '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()

  2. #2

    Vb.net - (Problemone :) Diversi post per login su sito web

    Salve, io ho questo problema: devo eseguire il post login sul sito del gestore telefonico 3, dopodichè devo scaricare la pagina info costi ed elaborere tutti i dati. Ho provato in diversi modo, classi, ma niente non riesco assolutamente a fare questi due post "collegati". Sul sito della 3 il login è un modulo chiamato "formdati" ed è forse questa la variabile che mi frega perchè io faccio il post alla pagina e non al modulo, però, non capisco come fare... in allegato posto un po' di scritto da osservare (è un po' un miscuglio di prove che purtroppo nn hanno portato ad alcun risultato... Spero che mi aiuterete.... thanks

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    'Dim post As New HttpPost()
    'post.Url = "http://www.tre.it:80/selfcare/areaclienti133/4552_infoCosti_ITA_LOGGED.xsl"
    'post.Encoding = Encoding.UTF8
    'post.Type = HttpPost.PostTypes.POST
    'post.Values.Add("proposition", "consumer")
    'post.Values.Add("username", user)
    'post.Values.Add("password", pass)
    'post.Post()
    'dim buffer As String = String.Empty
    'buffer = post.Post()
    '
    '' Address of URL
    'Dim URL As String = "http://www.tre.it/selfcare/login"
    'Dim richiesta As HttpWebRequest = WebRequest.Create(URL)
    'richiesta.Method = "POST"
    'richiesta.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
    'richiesta.ContentType = "application/x-www-form-urlencoded"
    'richiesta.Referer = "http://www.tre.it/selfcare/areaclienti133/4552_infoCosti_ITA_HTML.xsl"

    Dim request As WebRequest = WebRequest.Create("http://www.tre.it/selfcare/login")
    request.Method = "POST"
    Dim postdata As String = "proposition=consumer&username=user&password=p ass"
    Dim bytearray As Byte() = Encoding.UTF8.GetBytes(postdata)
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = bytearray.Length
    Dim newStream As Stream = request.GetRequestStream()
    newStream.Write(bytearray, 0, bytearray.Length)
    newStream.Close()
    Dim risposta As WebResponse = request.GetResponse()
    newStream = risposta.GetResponseStream
    Dim leggi As New StreamReader(newStream)
    Dim leggidalserver As String = leggi.ReadToEnd()
    leggi.Close()
    newStream.Close()
    risposta.Close()

    'Dim request2 As WebRequest = WebRequest.Create("http://www.tre.it/selfcare/areaclienti133/4552_infoCosti_ITA_LOGGED.xsl")
    'request2.Method = "GET"
    'Dim risposta2 As WebResponse = request2.GetResponse()
    'newStream2 = risposta2.GetResponseStream
    'Dim leggi2 As New StreamReader(newStream2)
    'Dim leggidalserver2 As String = leggi2.ReadToEnd()
    'leggi2.Close()
    'newStream2.Close()
    'risposta2.Close()

    My.Computer.FileSystem.WriteAllText(Application.St artupPath + "\Test.html", leggidalserver, True)
    MsgBox("ok")


    'Dim response As HttpWebResponse = request.GetResponse()
    'Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
    'Dim str As String = reader.ReadToEnd()
    End Sub

  3. #3
    Stò utilizzando questo ma purtroppo niente non mi funziona... aiuto...
    Dim web As New System.Net.WebClient()
    web.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
    Dim d As Byte() = System.Text.Encoding.ASCII.GetBytes("proposition=c onsumer&username=" & user.tostring & "password=" & pass.tostring)
    Dim res As Byte() = web.UploadData("http://www.tre.it:80/selfcare/areaclienti133/4552_infoCosti_ITA_LOGGED.xsl", "POST", d)
    Dim res2 As Byte() = web.DownloadData("http://www.tre.it:80/selfcare/areaclienti133/4552_infoCosti_ITA_LOGGED.xsl")
    Me.RichTextBox1.Text = System.Text.Encoding.ASCII.GetString(res)

  4. #4
    Finalmente ci sono riuscito con questo codice .
    -----------------------------
    Public Shared Function FormLoginGet(ByVal loginUri As String, ByVal loginData As String, ByVal requestUri As String) As String
    ' cookieContainer is used to store the cookies used by the login
    Dim cookieContainer As New CookieContainer()
    ' First hit the login page
    Dim req As HttpWebRequest = DirectCast(HttpWebRequest.Create(loginUri), HttpWebRequest)
    req.CookieContainer = cookieContainer
    req.Method = "POST"
    req.ContentType = "application/x-www-form-urlencoded"
    Dim encoding As New ASCIIEncoding()
    Dim loginDataBytes As Byte() = encoding.GetBytes(loginData)
    req.ContentLength = loginDataBytes.Length
    Dim stream As Stream = req.GetRequestStream()
    stream.Write(loginDataBytes, 0, loginDataBytes.Length)
    stream.Close()
    Dim res As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)
    req.Timeout = 500
    ' Then grab the content of the desired page
    req = DirectCast(HttpWebRequest.Create(requestUri), HttpWebRequest)
    req.CookieContainer = cookieContainer
    req.Method = "GET"
    res = DirectCast(req.GetResponse(), HttpWebResponse)
    Dim sr As New StreamReader(res.GetResponseStream())
    Return sr.ReadToEnd()
    End Function
    -------------------------------------------

    Però ho questo problema adesso: io devo scaricare due pagine da internet e se utilizzo il comando:

    InfoSoglie = PostGet.FormLoginGet("http://www.tre.it/selfcare/login", postdata, "http://www.tre.it/selfcare/areaclienti133/4552_soglie_ITA_LOGGED.xsl")
    InfoCosti = PostGet.FormLoginGet("http://www.tre.it/selfcare/login", postdata, "http://www.tre.it:80/selfcare/areaclienti133/4552_infoCosti_ITA_LOGGED.xsl")

    Il programma si blocca e al secondo POST-GET mi dice timeout non gestito dopo un po' di tempo, mentre se eseguo uno alla volta o divido i le due azioni in diversi bottoni tutto funziona! mi potreste aiutare?

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Ho unito le discussioni dato che, sito a parte, si tratta sempre dello stesso argomento.
    Ti invito ad usare il forum nel modo corretto, indicando sempre il linguaggio ed evitando di aprire più discussioni sullo stesso argomento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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.