Oppure

Loading
15/04/07 6:02
seven.7
Salve... di seguito vi riporto una classe in vb.net per il modulo post e get... vorrei inserire il settaggio dei cookie, consigli? grazie mille!

[CODE]
Imports System
Imports System.Collections.Generic
Imports System.Collections.Specialized
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Web


''' <summary>
''' Esegue un modulo HTTP (Form HTML) in modalità POST e GET.
''' </summary>
Public Class HttpPost


''' <summary>
''' Modalità di esecuzione del modulo.
''' </summary>
Public Enum PostTypes
''' <summary>
''' HTTP GET.
''' </summary>
[GET]
''' <summary>
''' HTTP POST.
''' </summary>
POST
End Enum

' OGGETTI PRIVATI
Private _url As String
Private _values As NameValueCollection
Private _type As PostTypes
Private _encoding As Encoding


''' <summary>
''' Esegue un modulo HTTP (Form HTML) in modalità POST e GET.
''' </summary>
Public Sub New()
' init default
Me._url = String.Empty
Me._type = PostTypes.[GET]
Me._values = New NameValueCollection()
Me._encoding = Text.Encoding.UTF8
End Sub


''' <summary>
''' Esegue un modulo in modalità POST e GET.
''' </summary>
''' <param name="url">URL del modulo da eseguire.</param>
Public Sub New(ByVal url As String)
Me.New()
Me._url = url
End Sub


''' <summary>
''' Esegue un modulo in modalità POST e GET.
''' </summary>
''' <param name="url">URL del modulo da eseguire.</param>
''' <param name="values">Collezione dei valori del modulo.</param>
Public Sub New(ByVal url As String, ByVal values As NameValueCollection)
Me.New(url)
Me._values = values
End Sub


''' <summary>
''' Esegue un modulo in modalità POST e GET.
''' </summary>
''' <param name="url">URL del modulo da eseguire.</param>
''' <param name="values">Collezione dei valori del modulo.</param>
''' <param name="encoding">Codifica del set di caratteri.</param>
Public Sub New(ByVal url As String, ByVal values As NameValueCollection, ByVal encoding As Encoding)
Me.New(url, values)
Me._encoding = encoding
End Sub


''' <summary>
''' Legge o imposta la URL del modulo da eseguire.
''' </summary>
Public Property Url() As String
Get
Return (Me._url)
End Get
Set(ByVal value As String)
Me._url = value
End Set
End Property


''' <summary>
''' Legge o imposta la collezione dei valori del modulo.
''' </summary>
Public Property Values() As NameValueCollection
Get
Return (Me._values)
End Get
Set(ByVal value As NameValueCollection)
Me._values = value
End Set
End Property


''' <summary>
''' Legge o imposta la modalità di esecuzione del modulo.
''' </summary>
Public Property Type() As PostTypes
Get
Return (Me._type)
End Get
Set(ByVal value As PostTypes)
Me._type = value
End Set
End Property


''' <summary>
''' Legge o imposta il tipo di codifica del set di caratteri.
''' </summary>
Public Property Encoding() As Encoding
Get
Return (Me._encoding)
End Get
Set(ByVal value As Encoding)
Me._encoding = value
End Set
End Property


''' <summary>
''' Esegue il modulo HTTP.
''' </summary>
''' <returns>String, codice HTML restituito dall'esecuzione del modulo.</returns>
Public Function Post() As String
Dim parameters As New StringBuilder()
For i As Integer = 0 To Me._values.Count - 1
Me.AddItem(parameters, Me._values.GetKey(i), Me._values(i))
Next
Return (PostData(Me._url, parameters.ToString(), Text.Encoding.UTF8))
End Function


''' <summary>
''' Esegue il modulo HTTP.
''' </summary>
''' <param name="url">URL del modulo da eseguire.</param>
''' <returns>String, codice HTML restituito dall'esecuzione del modulo.</returns>
Public Function Post(ByVal url As String) As String
Me._url = url
Return (Me.Post())
End Function


''' <summary>
''' Esegue il modulo HTTP.
''' </summary>
''' <param name="url">URL del modulo da eseguire.</param>
''' <param name="values">Collezione dei valori del modulo.</param>
''' <returns>String, codice HTML restituito dall'esecuzione del modulo.</returns>
Public Function Post(ByVal url As String, ByVal values As NameValueCollection) As String
Me._url = url
Me._values = values
Return (Me.Post())
End Function


''' <summary>
''' Esegue il modulo HTTP.
''' </summary>
''' <param name="postDatas">Valori del modulo, in formato UrlEncoded.</param>
''' <param name="url">URL del modulo da eseguire.</param>
''' <param name="encoding">Codifica del set di caratteri.</param>
''' <returns>String, codice HTML restituito dall'esecuzione del modulo.</returns>
Private Function PostData(ByVal url As String, ByVal postDatas As String, ByVal encoding As System.Text.Encoding) As String

Dim uri As Uri
Dim request As HttpWebRequest = Nothing

Select Case Me._type
Case PostTypes.POST
uri = New Uri(url)
request = DirectCast(WebRequest.Create(uri), HttpWebRequest)
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = postDatas.Length
Using writeStream As Stream = request.GetRequestStream()
Dim bytes As Byte() = encoding.GetBytes(postDatas)
writeStream.Write(bytes, 0, bytes.Length)
End Using
Exit Select
Case PostTypes.[GET]
uri = New Uri(url + "?" + postDatas)
request = DirectCast(WebRequest.Create(uri), HttpWebRequest)
request.Method = "GET"
Exit Select
End Select
Dim ret As String = String.Empty
Using response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Using responseStream As Stream = response.GetResponseStream()
Using readStream As New StreamReader(responseStream, encoding)
ret = readStream.ReadToEnd()
End Using
End Using
End Using
Return ret
End Function


''' <summary>
''' Codifica i parametri e li concatena in una stringa formattata per l'esecuzione del modulo.
''' </summary>
''' <param name="baseRequest">Stringa formattata contenente i parameteri codificati in precedenza.</param>
''' <param name="dataItem">Valore da codificare.</param>
Private Sub AddItem(ByRef baseRequest As StringBuilder, ByVal key As String, ByVal dataItem As String)
If baseRequest Is Nothing Then
baseRequest = New StringBuilder()
End If
baseRequest.Append((IIf((baseRequest.Length <> 0), "&", String.Empty)) + key + "=" + HttpUtility.UrlEncode(dataItem))
End Sub

End Class
[/CODE]


aaa
15/04/07 14:49
AnyWay
Io userei un CookieContainer, però con il codice VB non so aiutarti, quindi prova a vedere qui:
http://www.devspy.com/forums/thread/5473.aspx
aaa