Une classe pour gérez les requettes post sur serveur http [.net 2.0]

Soyez le premier à donner votre avis sur cette source.

Vue 8 602 fois - Téléchargée 1 360 fois

Description

Voici une petite classe qui permet d'effectuer Facilement des requettes POST
============================================================================

Gestion du post :
-----------------
Ajout de champ de formulaire classic,
Upload de fichier,
Transfere d'objet serializer en binaire ou xml

Gestion de la réponse serveur:
------------------------------
la réponse peux être automatique moment traiter d'une manière au choix:
Sauveguarde dans un fichier,
Déserialization dans un objet (binaire ou xml),
retour d'un booléan (true si le statuscode de la réponse serveur est 200)
retour du statuscode

Conclusion :


Ammuser vous et faite moi part des corrections/évolutions qui pourais y être apporter.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Malkuth
Messages postés
278
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
2 -
Je vais essayer de me dégager un peu de temps se weekend pour mettre un peu a jour cette source et prendre en compte tes ajout, concernant l'encodage, je ne suis convaincu ni par le UTF8 ni par le et moins encore par le default qui risque d'être génant lors d'échange avec des system reposant sur d'autre encodage (unix/linux notament), en fait je pense rajouter un propriéter encoding sur le constructeur se qui me déchargeras de toute "responsabilitée" et rendra le code plus maléable :p

je vais aussi supprimer les Encoding.GetBytes(...) qui oblige a maintenir en mémoire des tableau d'octets volumineux l'utilisation de TextWriter seras a la fois plus eficace plus simple et finalement plus compréhensible.
bizmoute
Messages postés
29
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 novembre 2008
-
Correction suggérée : Utiliser System.Text.Encoding.Default plutôt que UTF8 pour éviter les problèmes avec les accents.
bizmoute
Messages postés
29
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 novembre 2008
-
Désolé, une petite erreur n'avais pas été corrigé dans le code que j'ai posté...
C'était lors de l'initialisation du array "Buff"

''' <summary>
''' Transmet un fichier dans le formulaire de la requette POST.
''' </summary>
''' Clef.


''' Nom du fichier à transmettre.


''' Stream à envoyer


''' type mime du fichier à transmettre.


Public Sub AddFile(ByVal Name As String, _
ByVal FileName As String, _
ByVal MemStream As System.IO.MemoryStream, _
Optional ByVal ContentType As String = "application/octet-stream")
Dim BBuff As String
AddFileBoundaryHeader(Name, FileName, ContentType)

Dim Buff(CInt(MemStream.Length - 1)) As Byte
MemStream.Read(Buff, 0, CInt(MemStream.Length))

_Request.Write(Buff, 0, Buff.Length)
BBuff = vbCrLf
Buff = Text.Encoding.UTF8.GetBytes(BBuff)
_Request.Write(Buff, 0, Buff.Length)
End Sub
bizmoute
Messages postés
29
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 novembre 2008
-
Parfois il arrive qu'on ne désire pas enregistrer un fichier sur le disque avant de l'envoyer, alors voici une évolution suggérée :
''' <summary>
''' Transmet un fichier dans le formulaire de la requette POST.
''' </summary>
''' Clef.


''' Chemin vers le fichier à transmettre
''' ou nom du fichier.


''' type mime du fichier à transmettre.


Private Sub AddFileBoundaryHeader( _
ByVal Name As String, _
ByVal FileName As String, _
Optional ByVal ContentType As String = "application/octet-stream")
Dim BBuff As String
BBuff = "--" & _boundary & vbCrLf
BBuff &= "Content-Disposition: form-data; name=""" & Name & """; filename=""" & FileName & """" & vbCrLf
BBuff &= "Content-Type: " & ContentType & vbCrLf
BBuff &= vbCrLf

Dim Buff As Byte()
Buff = Text.Encoding.UTF8.GetBytes(BBuff)
_Request.Write(Buff, 0, Buff.Length)
End Sub

''' <summary>
''' Transmet un fichier dans le formulaire de la requette POST.
''' </summary>
''' Clef.


''' Chemin vers le fichier à transmettre.


''' type mime du fichier à transmettre.


Public Sub AddFile(ByVal Name As String, _
ByVal FilePath As String, _
Optional ByVal ContentType As String = "application/octet-stream")
Dim BBuff As String
Dim Buff As Byte()
AddFileBoundaryHeader(Name, FilePath, ContentType)

Buff = System.IO.File.ReadAllBytes(FilePath)
_Request.Write(Buff, 0, Buff.Length)
BBuff = vbCrLf
Buff = Text.Encoding.UTF8.GetBytes(BBuff)
_Request.Write(Buff, 0, Buff.Length)
End Sub

''' <summary>
''' Transmet un fichier dans le formulaire de la requette POST.
''' </summary>
''' Clef.


''' Nom du fichier à transmettre.


''' Stream à envoyer


''' type mime du fichier à transmettre.


Public Sub AddFile(ByVal Name As String, _
ByVal FileName As String, _
ByVal MemStream As System.IO.MemoryStream, _
Optional ByVal ContentType As String = "application/octet-stream")
Dim BBuff As String
AddFileBoundaryHeader(Name, FileName, ContentType)

Dim Buff(CInt(MemStream.Length)) As Byte
MemStream.Read(Buff, 0, CInt(MemStream.Length))

_Request.Write(Buff, 0, Buff.Length)
BBuff = vbCrLf
Buff = Text.Encoding.UTF8.GetBytes(BBuff)
_Request.Write(Buff, 0, Buff.Length)
End Sub
bizmoute
Messages postés
29
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 novembre 2008
-
Ton fichier HTTPTool.vb est exactement ce que je cherchais!!
Merci beaucoup pour ce beau travail!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.