From: Christian P. <cp...@se...> - 2005-01-07 16:10:53
|
Hi List ! I've re-worked and added the HTTPClient class. Changes over P1: HTTPResponse is now a IODevice, reading response bodies is now more straight-forwarded. Since we have IOFilter's (you gonna love them ;-) and HTTPResponse being a IODevice, users are now capable of reading Transfer-Encoded HTTP response-bodies. See how easy it can be: -- using namespace P; using namespace P::IO; using namespace P::Net; HTTPClient cl; cl.open(Socket::Inet); std::cerr << "Connecting to 192.168.1.1..." << std::endl; cl.connect(InetAddress("192.168.1.1"), 80); std::cerr << "Sending request ..." << std::endl; HTTPRequest req(HTTPRequest::GET, URL("http://192.168.1.1/")); req.setAcceptEncoding("deflate"); cl.sendRequest(req); std::cerr << "Reading response ..." << std::endl; HTTPResponse resp = cl.readResponse(); std::cerr << "Response: " << resp.protocol() << ' ' << resp.responseCode() << ' ' << resp.response() << std::endl; IOFilter* filter = 0; if(resp.header().transferEncoding() == "deflate") { filter = new ZLibIOFilter(); resp.setFilter(filter); } while(!resp.eof()) { char tmp[1024]; size_t count = resp.read(tmp, 1024); std::cerr.write(tmp, count); } if(filter) { resp.setFilter(0); delete filter; } -- Thats it ! Any comments are welcome. Greetings, Christian |