Italian HttpJob e gzip

fox96

Member
Licensed User
Longtime User
Ciao, mi sto incartando sicuramente per una stupidata ma anche cercando nel forum non sono riuscito a capire.

Sto usanto HttpJob per recuperare una pagina internet, prima funzionava bene, adesso a quanto ho capito il server mi manda i dati in gzip ma facendo anche delle prove di decompressione dai vari esempi mi da errore e non riesco a venirne a capo.
 

fox96

Member
Licensed User
Longtime User
Ciao Luca, questo è un progetto demo per capire cosa succede. nella webview in alto si vede corretto, a recuperarlo e metterlo della label si vede in quel modo.
 

Attachments

  • demo.zip
    7.2 KB · Views: 223
  • Screenshot_2014-04-15-14-08-46.png
    Screenshot_2014-04-15-14-08-46.png
    47.8 KB · Views: 217

fox96

Member
Licensed User
Longtime User
Ciao Luca, non c'è un file, fai conto che avevo lo stesso risultato usando vb.net è ho risolto aggiungendo il codice evidenziato
B4X:
Dim srequest As HttpWebRequest = HttpWebRequest.Create(url)
-->srequest.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate<--
Dim sresponse As HttpWebResponse = srequest.GetResponse
Dim reader As StreamReader = New StreamReader(sresponse.GetResponseStream)
Dim s As String
s = reader.ReadToEnd

Secondo me il getstring dovrebbe già darti il testo decompresso.
 

LucaMs

Expert
Licensed User
Longtime User
Si, il GetString legge il file decompresso generato dalla fuzione AsyncUnGzip della libreria Archiver, e infatti non è colpa del GetString, perché ho provato ad aprire il file con 7Zip e mi dice che è corrotto, quindi, se a te funziona, per qualche motivo lo scarica male (o lo salva male!)
 
Last edited:

fox96

Member
Licensed User
Longtime User
Ciao Luca, parlo dell'HttpJob.
In questo caso quando scarico la pagina mi restituisce il formato compresso inviato da server.
La webview in automatico decomprime il testo e lo interpreta, nel httpjob dovrei vedere header per sapere che se è un testo compresso per poi capire comunque come decomprimerlo.
 

LucaMs

Expert
Licensed User
Longtime User
Ciao.

Sì, ma col codice VB.Net riesci a decomprimerlo usando:
srequest.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate

(sempre se ho capito bene!)
Quindi te lo trovi "unzippato" e lo leggi con lo StreamReader.

Quello che non funziona nella mia app di prova è proprio la decompressione, di tipo GZip.
Probabilmente a te funziona perché usi quel: " Or DecompressionMethods.Deflate".

Penso che la libreria Archiver utilizzi un formato inadatto.
 
Top