Vb net + webclient

Résolu
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012 - 29 juil. 2012 à 09:27
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012 - 2 août 2012 à 05:01
bonjour

j'utilise webclient.UploadStringAsync pour récupérer des données à partir de quelques sites et je voudrais savoir s'il y a un moyen de décompresser un résultat compressé avec gzip ou deflate
j'ai cherché partout mais je ne trouve que des résultats pour httpwebrequest et pas pour webclient, je voudrais savoir si c'est possible avec webclient ou pas

merci d'avance


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie

4 réponses

Utilisateur anonyme
1 août 2012 à 17:00
je voudrais savoir s'il y a un moyen de décompresser un résultat compressé avec gzip ou deflate
Je me rends compte que je n'avais pas bien lu la question.

Pour me faire pardonner, voici une solution :

Commence par ajouter les imports nécessaires :
Imports System.Net
Imports System.IO
Imports System.IO.Compression


Puis intègre la classe :

Public Class clsMonSysteme
'tu remarqueras que je fais hériter cette classe du WebClient
    Inherits WebClient

    'sub du download
    Sub Download(ByVal AdresseDistante As String, ByVal FichierDest As String)
        Me.DownloadFile(AdresseDistante, FichierDest)
    End Sub
    'sub upload
    Sub Upload(ByVal AdresseDistante As String, ByVal FichierOrigine As String)
        Me.UploadFile(IO.Path.Combine(AdresseDistante, IO.Path.GetFileName(FichierOrigine)), Nothing, FichierOrigine)
    End Sub
    
    'compression d'un fichier
    Sub Compress(ByVal FichierOrigine As String, ByVal DestFile As String)
        Dim data() As Byte = IO.File.ReadAllBytes(FichierOrigine)
        Using writer As New IO.FileStream(DestFile, IO.FileMode.OpenOrCreate)
            Dim ds As New GZipStream(writer, CompressionMode.Compress)
            ds.Write(data, 0, data.Length)
        End Using
    End Sub
    
    'décompression d'un fichier
    Sub Decompress(ByVal FichierOrigine As String, ByVal DestFile As String)
        Using writer As New IO.FileStream(DestFile, IO.FileMode.OpenOrCreate)
            Using reader As New IO.FileStream(FichierOrigine, IO.FileMode.OpenOrCreate)
                Dim ds As New GZipStream(reader, CompressionMode.Decompress)
                ds.CopyTo(writer)
            End Using
        End Using
    End Sub
End Class


Puis tu peux tester par exemple comme ceci :
'j'instancie ma classe
Dim S As New clsMonSysteme
'ici je compresse un fichier texte en gz
S.Compress("mots.txt", "mots.gz")
'fournir une adresse ftp par exemple du style puis le nom du fichier en paramètre 
S.Upload("ftp://login:pass@ftpperso.free.fr/dossier/", "mots.gz")
'pour récupérer un fichier entrer son adresse distante et le nom souhaité à la réception
S.Download("ftp://login:pass@ftpperso.free.fr/dossier/mots.gz", "n_mots.gz")
'puis on le décompresse
S.Decompress("n_mots.gz", "n_mots.txt")


En espérant que ça puisse te servir
3
Utilisateur anonyme
1 août 2012 à 14:53
Bonjour,

Ta question est très vague et manque cruellement de détails.

Tu ne dis pas comment ont été compressées les données que tu souhaites télécharger et décompresser. Je te donne un peu de lecture en français sur la classe GZipStream et notamment les 'Notes'.

Le problème n'est pas de savoir s'il faut utiliser httpwebrequest ou webclient car le fichier (donc compressé) téléchargé sera le même.
0
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 04:59
bonjour
ahhhh je suis vraiment désolé j'ai cru avoir mis mon code ici je suis désolé, merci énormement pour votre aide banana32

voici mon code et la solution avec

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 05:01
votre code ma été d'une grande aide merci beaucoup

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
0
Rejoignez-nous