cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 19 nov. 2008 à 07:27
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és29Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention21 novembre 2008 29 oct. 2008 à 15:07
Correction suggérée : Utiliser System.Text.Encoding.Default plutôt que UTF8 pour éviter les problèmes avec les accents.
bizmoute
Messages postés29Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention21 novembre 2008 28 oct. 2008 à 20:16
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és29Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention21 novembre 2008 28 oct. 2008 à 15:34
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és29Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention21 novembre 2008 28 oct. 2008 à 14:27
Ton fichier HTTPTool.vb est exactement ce que je cherchais!!
Merci beaucoup pour ce beau travail!
19 nov. 2008 à 07:27
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.
29 oct. 2008 à 15:07
28 oct. 2008 à 20:16
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
28 oct. 2008 à 15:34
''' <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
28 oct. 2008 à 14:27
Merci beaucoup pour ce beau travail!