X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=examples%2Fhttpget.cpp;h=a4314cef6e3ec12ee83114d36f3e6bd0a823ae71;hp=70942b7647ffb0bcbdff535e902af0305eadb2ba;hb=HEAD;hpb=5b161886744ecbf3960ffe6ee5601df6d4a217ce diff --git a/examples/httpget.cpp b/examples/httpget.cpp index 70942b7..18ef799 100644 --- a/examples/httpget.cpp +++ b/examples/httpget.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -18,6 +19,8 @@ public: HttpGet(int, char **); virtual int main(); +private: + void socket_error(const exception &); }; HttpGet::HttpGet(int argc, char **argv): @@ -25,18 +28,14 @@ HttpGet::HttpGet(int argc, char **argv): { GetOpt getopt; getopt.add_option('v', "verbose", verbose, GetOpt::NO_ARG); + getopt.add_argument("url", url, GetOpt::REQUIRED_ARG); getopt(argc, argv); - - const vector &args = getopt.get_args(); - if(args.empty()) - throw usage_error("No URL"); - - url = args.front(); } int HttpGet::main() { Http::Client client; + client.signal_socket_error.connect(sigc::mem_fun(this, &HttpGet::socket_error)); if(verbose) { @@ -45,14 +44,25 @@ int HttpGet::main() IO::print(client.get_request()->str()); client.wait_response(); const Http::Response *response = client.get_response(); - IO::print("=== Got response ===\n"); - IO::print(response->str()); + if(response) + { + IO::print("=== Got response ===\n"); + IO::print(response->str()); + } } else { const Http::Response *response = client.get_url(url); - IO::print(response->get_content()); + if(response) + IO::print(response->get_content()); } return 1; } + +void HttpGet::socket_error(const exception &e) +{ + IO::print("=== Error ===\n"); + IO::print("%s\n", Debug::demangle(typeid(e).name())); + IO::print("%s\n", e.what()); +}