|
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
|