1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
(*
* ocurl.ml
*
* Copyright (c), 2003, Lars Nilsson, <lars@quantumchamaleon.com>
*)
let writer accum data =
Buffer.add_string accum data
let showContent content =
Printf.printf "%s" (Buffer.contents content);
flush stdout
let showInfo connection =
Printf.printf "Time: %f\nURL: %s\n"
(Curl.get_totaltime connection)
(Curl.get_effectiveurl connection)
let getContent connection url =
Curl.set_url connection url;
Curl.perform connection
let _ =
Curl.global_init Curl.CURLINIT_GLOBALALL;
begin
let result = Buffer.create 16384
and errorBuffer = ref "" in
try
let connection = Curl.init () in
Curl.set_errorbuffer connection errorBuffer;
Curl.set_writefunction connection (writer result);
Curl.set_followlocation connection true;
Curl.set_url connection Sys.argv.(1);
Curl.perform connection;
showContent result;
showInfo connection;
Curl.cleanup connection
with
| Curl.CurlException (reason, code, str) ->
Printf.fprintf stderr "Error: %s\n" !errorBuffer
| Failure s ->
Printf.fprintf stderr "Caught exception: %s\n" s
end;
Curl.global_cleanup ()
|