LibCURL is a fairly low level library, so you will need to write your own handler function to receive and convert the data from the C format.
function curl_write_cb(curlbuf::Ptr{Cvoid}, s::Csize_t, n::Csize_t, p_ctxt::Ptr{Cvoid})::Csize_t
sz = s * n
data = Array{UInt8}(undef, sz)
ccall(:memcpy, Ptr{Cvoid}, (Ptr{Cvoid}, Ptr{Cvoid}, UInt64), data, curlbuf, sz)
if p_ctxt == C_NULL
j_ctxt = nothing
else
j_ctxt = unsafe_pointer_to_objref(p_ctxt)
end
append!(j_ctxt, data)
sz
end
curl = curl_easy_init()
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, @cfunction(curl_write_cb, Csize_t, (Ptr{Cvoid}, Csize_t, Csize_t, Ptr{Cvoid})))
buffer = UInt8[]
curl_easy_setopt(curl, CURLOPT_WRITEDATA, pointer_from_objref(buffer))
curl_easy_setopt(curl, CURLOPT_URL, url)
GC.@preserve buffer begin
res = curl_easy_perform(curl)
end
# At this point buffer will contain all the data read from the network
To learn more, you’ll need to read the CURL API docs at libcurl - API
It is written for C as the LibCURL.jl library is a thin wrapper around the C library.