Login  Register

Re: why is ZnEasy choking on this and languages as c# and ruby not

Posted by Sven Van Caekenberghe-2 on Sep 27, 2020; 8:37pm
URL: https://forum.world.st/why-is-ZnEasy-choking-on-this-and-languages-as-c-and-ruby-not-tp5122546p5122567.html



> On 27 Sep 2020, at 19:34, Roelof Wobben via Pharo-users <[hidden email]> wrote:
>
> Hello,
>
> In a project of mine I do this :  
>
> (ZnEasy get: 'https://www.rijksmuseum.nl/api/nl/collection/SK-C-1368/tiles?key=14OGzuak'
> ) contents .
>
> but this is given me a bytearray.
>
> When I do the same in other languages I know like c# or ruby I get a dictionary like I suspect.
>
>
> Can som one explain to me why this happens with ZnEasy.
>
> Regards,
>
> Roelof

This website/webservice has an incomplete http 1.1 fallback IMHO, as it does not set the content-type of the response - in that case the default is application/octet-stream, hence a ByteArray.

You can see this when you ask curl to use http 1.1

$ curl -v --http1.1 https://www.rijksmuseum.nl/api/nl/collection/SK-C-1368/tiles?key=14OGzuak

You will see there is no content-type in the response. Now, curl too will seemingly show you the expected text, but that is an assumption it cannot actually make (it does this in a unix tradition).


Now, since we know/expect textual JSON data (apparently), you can make the request work as follows:

(ZnEasy get: 'https://www.rijksmuseum.nl/api/nl/collection/SK-C-1368/tiles?key=14OGzuak') contents utf8Decoded.

When you have NeoJSON load, you can parse as follows:

NeoJSONObject fromString: (ZnEasy get: 'https://www.rijksmuseum.nl/api/nl/collection/SK-C-1368/tiles?key=14OGzuak') contents utf8Decoded.


Sven