HTTPClient.h

00001 // $Id: HTTPClient.h 21 2010-09-05 04:18:17Z cschwarz1 $
00002 
00003 #ifndef BASE_HTTP_HTTPCLIENT_H
00004 #define BASE_HTTP_HTTPCLIENT_H
00005 
00006 #include "HTTPResponse.h"
00007 #include "libppbase/base/Random.h"
00008 #include "libppbase/base/Socket.h"
00009 
00011 namespace base_http {
00013 
00017     class PPBASE_HTTP_EXPORT HTTPClient {
00018     public:
00020 
00024         HTTPClient(base::Socket *sock = NULL, const base::String &addr = "");
00025 
00027 
00030         base::String createBoundary();
00031 
00033 
00037         HTTPResponse *sendRequest(HTTPRequest &request);
00038 
00040 
00044         void setSocket(base::Socket *sock, const base::String &addr = "");
00045 
00046     protected:
00048 
00052         int read(base::String &rbuf);
00053 
00055 
00058         void readBody(HTTPRequest *ret);
00059 
00061 
00065         int readChar(char *ch);
00066 
00068 
00072         HTTPResponse *readHeader(const HTTPRequest &request);
00073 
00075 
00078         void readHeaders(HTTPRequest *request);
00079 
00080         base::String  _addr;       
00081         size_t        _cchunk;     
00082         bool          _chunked;    
00083         bool          _chunkend;   
00084         size_t        _clength;    
00085         size_t        _cread;      
00086         bool          _creadeof;   
00087         base::Random  _rand;       
00088         base::Socket *_sock;       
00089     };
00090 }
00091 
00092 #endif