Hmm, the following all work for me (in Pharo 7.0.1 on macOS):

ZnClient new
        url: 
'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
        get;
        yourself.
        
ZnClient new
        url: 
'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
        get;
        contents.
        
ZnClient new
        get: 
'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip'.
        
ZnClient new
        url: 
'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
        downloadTo: '/tmp'.

$ ls -lah /tmp/BioSmalltalkTestFiles.zip 
-rw-r--r--@ 1 sven  wheel   5.3M Jan 26 22:57 /tmp/BioSmalltalkTestFiles.zip

$ file /tmp/BioSmalltalkTestFiles.zip 
/tmp/BioSmalltalkTestFiles.zip: Zip archive data, at least v2.0 to extract

> On 26 Jan 2019, at 20:36, Hernán Morales Durand <hernan.mora...@gmail.com> 
> wrote:
> 
> Hi there,
> 
> In Pharo 7.0 I've encountered an error related with the new streams changes 
> (https://github.com/pharo-open-documentation/pharo-wiki/blob/master/Migration/MigrationToPharo7.md)
>  while downloading a zip file. Problem is ZnUTF8Encoder expects a String, but 
> my code which worked in Pharo 6 provides a ByteArray. I've isolated it in a 
> reproducible way:
> 
> | webClient resp |
> webClient := ZnClient new.
> UIManager default informUserDuring: [ :bar | 
>     bar label: 'Downloading resources for ' , self class printString.
>     [ webClient
>         signalProgress: true;
>         get: 
> 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip'
>  ]
>     on: HTTPProgress , ZnEntityTooLarge
>     do: [ : ex | 
>         (ex isKindOf: ZnEntityTooLarge)
>             ifTrue: [ ex resume ]
>             ifFalse: [ 
>                 | progress |
>                 progress := ex.
>                 progress isEmpty
>                     ifFalse: [
>                         bar current: progress percentage.
>                         progress total ifNotNil: [ :aTotalNumber | bar label: 
> 'Downloading ' ] ].
>                 progress resume ] ] ].
> (resp := webClient response) isSuccess
>         ifTrue: [ 'output2.zip' asFileReference writeStreamDo: [ : stream | 
> stream nextPutAll: resp contents ] ]
>         ifFalse: [ self error: 'Cannot download resource files' ].
> 
> I also tried using #writeOn: on the response, but that also wrote the 
> response header:
> 
> self response writeOn: 'test1.zip' asFileReference writeStream.
> self response writeOn: 'test2.zip' asFileReference binaryWriteStream.
> 
> 
> HTTP/1.1 200 OK
> Via: 1.1 varnish
> Strict-Transport-Security: max-age=31536000
> ...
> 
> PK    ¸  D               BioSmalltalkTestFiles/PK ½U?+*8!"  K  /   
> BioSmalltalkTestFiles/A4A7DS6V01S-Alignment.xmlíœks›H †¿à ¯èà ‡©à 
> "’¹_  ¦: 0 R$`ðjSS.,a›
> 
> Any suggestion?
> 
> Cheers,
> 
> Hernán
> 
> 
> 


Reply via email to