Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB] Richieste POST con HttpWebRequest
Forum - C# / VB.NET - [VB] Richieste POST con HttpWebRequest

Avatar
Question (Normal User)
Rookie


Messaggi: 58
Iscritto: 14/12/2010

Segnala al moderatore
Postato alle 21:33
Martedì, 28/12/2010
Questo topic è stato chiuso dal moderatore

Ciao a tutti :)
Starei provando ad effettuare il login su un sito tramite metodo POST con gli oggetti citati nel titolo.
Quando vado a vedere la variabile Source (vedi codice) mi ritorna il sorgente della pagina di redirect,solo che andando a leggerlo si può notare come l'URL a cui sarò reindirizzato è quello del mancato Login e non quello corretto.
Cosa sto sbagliando?
Ecco il sorgente del metodo con i commenti:

Codice sorgente - presumibilmente VB.NET

  1. Dim Request As Net.HttpWebRequest, Response As Net.HttpWebResponse, Credentials() As Byte, Source As String
  2. 'Dichiaro l'URi dove effetterò il POST
  3.             Dim LoginURI As New Uri("https://www.sito.com/account/submit")
  4.  
  5. 'Variabile Byte che fungerà da Buffer per l'oggetto Stream contenente la quey string
  6. '(ho omesso il ? ma anche mettendolo non cambia niente)
  7.             Credentials = System.Text.Encoding.UTF8.GetBytes("credentials.username=" & _User & "&credentials.password=" & _Password)
  8.  
  9. 'Instanzio l'HttpWebRequest e ne definisco alcune proprietà
  10.             Request = Net.WebRequest.Create(LoginURI)
  11. 'Il metodo è POST
  12.             Request.Method = "POST"
  13.             Request.ContentType = "text/html; charset=utf-8"
  14. 'ovviamente la richiesta deve avere le dimensioni della query string
  15.             Request.ContentLength = Credentials.Length
  16. 'mi servono i cookies per dopo
  17.             Request.CookieContainer = New Net.CookieContainer
  18.  
  19. 'Instanzio uno Stream per scrivere nel flusso di dati
  20.             Dim Writer As IO.Stream = Request.GetRequestStream
  21.             Try
  22. 'scrivo
  23.                 Writer.Write(Credentials, 0, Credentials.Length)
  24.             Catch ex As Exception
  25.                 Throw New Exception(ex.Message)
  26.             Finally
  27. 'in ogni caso lo stream và chiuso
  28.                 Writer.Close()
  29.             End Try
  30.  
  31. 'Instanzio l'HttpWebResponse
  32.             Response = Request.GetResponse
  33.  
  34. 'Instanzio uno streamreader per leggere completamente la risposta
  35.             Dim Reader As New IO.StreamReader(Response.GetResponseStream)
  36.  
  37.             Try
  38. 'Leggo la risposta completa e la metto in Source
  39.                 Source = Reader.ReadToEnd
  40.             Catch ex As Exception
  41.                 Throw New Exception(ex.Message)
  42.             Finally
  43. 'In ogni caso lo streamreader và chiuso
  44.                 Reader.Close()
  45.             End Try




EDIT:
risolto cambiando il contenttype con "application/x-www-form-urlencoded"

Ultima modifica effettuata da Question il 29/12/2010 alle 0:49


Ma ovviamente x64
PM