To process images or files that are returned in an HTTP response message, cast the Entity field in the response message to a ByteBucket as shown in this example:
USING OpenEdge.Net.HTTP.*.
USING OpenEdge.Net.URI.
USING Progress.Json.ObjectModel.*.
USING OpenEdge.Core.Memptr FROM PROPATH.
USING OpenEdge.Core.ByteBucket FROM PROPATH.
USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder. 
 
DEFINE VARIABLE oLib AS IHttpClientLibrary NO-UNDO. 



DEFINE VARIABLE oURI AS URI NO-UNDO.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO. 
DEFINE VARIABLE mData AS MEMPTR NO-UNDO.
DEFINE VARIABLE oPic AS CLASS Memptr NO-UNDO.
DEFINE VARIABLE oClient AS IHttpClient NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.


DEFINE VARIABLE oResponseBody AS OpenEdge.Core.String NO-UNDO.
DEFINE VARIABLE JsonString AS LONGCHAR NO-UNDO.
DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
DEFINE VARIABLE oImageInResponse AS CLASS ByteBucket NO-UNDO.
DEFINE VARIABLE oImage AS CLASS Memptr NO-UNDO.

//Build a request
oURI = URI:Parse("https://raw.githubusercontent.com/PeterJudge-PSC/http_samples/master/http_client/multipart_messages/smile.png").
oRequest = RequestBuilder:GET(oURI):Request.


//Execute a request
oLib = ClientLibraryBuilder:Build():sslVerifyHost(NO):Library.

oClient = ClientBuilder:Build():UsingLibrary(oLib):Client.
oResponse = oClient:Execute(oRequest).

//Process the response
IF oResponse:StatusCode <> 200 THEN
    RETURN ERROR "Request Error: " + STRING(oResponse:StatusCode).
ELSE
    oImageInResponse = CAST(oResponse:Entity, ByteBucket).
    oImage = oImageInResponse:GetBytes().
    COPY-LOB FROM oImage:Value TO FILE "C:/Samples/NewSmile1.png".