2010-02-17 3 views
1

Les données que je poste à partir d'un client VB.Net sont volumineuses et je veux les compresser. Je veux faire un "POST" et le serveur apache supporte mod_deflate. J'essaie d'intégrer DeflateStream dans mon code postal, mais ne semble pas fonctionner.Faire un message HTTP dans .NET (Vb) avec des données compressées en utilisant deflatestream

Je peux envoyer les données sans compression en utilisant le code standard.

request.ContentType = "application/x-www-form-urlencoded" 

    Dim dataStream As Stream = request.GetRequestStream() 
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strEncodedXML) 
    request.ContentType = "application/x-www-form-urlencoded" 
    request.ContentLength = byteArray.Length 
    dataStream.Write(byteArray, 0, byteArray.Length) 
    dataStream.Close() 
    Dim response As WebResponse = request.GetResponse() 

Cependant, je ne suis pas sûr de savoir comment ajouter la compression en utilisant le Deflate Stream. Ma meilleure estimation est la suivante, mais je ne pense pas que cela fonctionne.

request.Headers.Add("Content-Encoding", "deflate") 
    request.ContentType = "application/x-www-form-urlencoded" 

    Dim dataStream As Stream = request.GetRequestStream() 
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strEncodedXML) 
    Dim compress As New DeflateStream(dataStream, CompressionMode.Compress, True) 
    request.ContentType = "application/x-www-form-urlencoded" 
    request.ContentLength = byteArray.Length 
    dataStream.Write(byteArray, 0, byteArray.Length) 
    dataStream.Close() 
    Dim response As WebResponse = request.GetResponse() 

Questions.

  1. Dois-je enverrez la ContentLength du comprimé Stream, si oui, comment puis-je obtenir cela. Doit-on écrire dans le flux de données ou compresser?
  2. Est-ce ainsi que vous utilisez ensemble DataStream et DeflateStram ?
  3. Du côté du serveur, étant donné que apache est automatiquement censé être la manipulation du gonflage, comment puis-je sais qu'il fonctionne (à ce jour, je sais qu'il n'y a pas de fois des économies sur mes messages entre les deux méthodes utilisées ci-dessus).
+0

Pourquoi ne pensez-vous pas que cela fonctionne? –

Répondre

0

This question contient le code qui zips la demande (qui répond implicitement votre Q1, Q2 et Q3).

Q4: Utilisez un renifleur pour vérifier les données envoyées sur le fil. Fiddler2 est gratuit et super facile à installer et à utiliser.

Les réponses à la question liée expliquent pourquoi mod_deflate ne sera pas votre ami en ce qui concerne la compression de la requête.

Questions connexes