1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: http.h 3 // Purpose: HTTP protocol 4 // Author: Guilhem Lavaux 5 // Modified by: Simo Virokannas (authentication, Dec 2005) 6 // Created: August 1997 7 // RCS-ID: $Id: http.h 41020 2006-09-05 20:47:48Z VZ $ 8 // Copyright: (c) 1997, 1998 Guilhem Lavaux 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 #ifndef _WX_HTTP_H 12 #define _WX_HTTP_H 13 14 #include "wx/defs.h" 15 16 #if wxUSE_PROTOCOL_HTTP 17 18 #include "wx/hashmap.h" 19 #include "wx/protocol/protocol.h" 20 21 WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxString, wxStringToStringHashMap, 22 class WXDLLIMPEXP_NET ); 23 24 class WXDLLIMPEXP_NET wxHTTP : public wxProtocol 25 { 26 public: 27 wxHTTP(); 28 virtual ~wxHTTP(); 29 30 virtual bool Connect(const wxString& host, unsigned short port); Connect(const wxString & host)31 virtual bool Connect(const wxString& host) { return Connect(host, 0); } 32 virtual bool Connect(wxSockAddress& addr, bool wait); 33 bool Abort(); 34 wxInputStream *GetInputStream(const wxString& path); GetError()35 inline wxProtocolError GetError() { return m_perr; } 36 wxString GetContentType(); 37 38 void SetHeader(const wxString& header, const wxString& h_data); 39 wxString GetHeader(const wxString& header) const; 40 void SetPostBuffer(const wxString& post_buf); 41 42 void SetProxyMode(bool on); 43 GetResponse()44 int GetResponse() { return m_http_response; } 45 SetUser(const wxString & user)46 virtual void SetUser(const wxString& user) { m_username = user; } SetPassword(const wxString & passwd)47 virtual void SetPassword(const wxString& passwd ) { m_password = passwd; } 48 49 protected: 50 enum wxHTTP_Req 51 { 52 wxHTTP_GET, 53 wxHTTP_POST, 54 wxHTTP_HEAD 55 }; 56 57 typedef wxStringToStringHashMap::iterator wxHeaderIterator; 58 typedef wxStringToStringHashMap::const_iterator wxHeaderConstIterator; 59 60 bool BuildRequest(const wxString& path, wxHTTP_Req req); 61 void SendHeaders(); 62 bool ParseHeaders(); 63 64 wxString GenerateAuthString(const wxString& user, const wxString& pass) const; 65 66 // find the header in m_headers 67 wxHeaderIterator FindHeader(const wxString& header); 68 wxHeaderConstIterator FindHeader(const wxString& header) const; 69 70 // deletes the header value strings 71 void ClearHeaders(); 72 73 wxProtocolError m_perr; 74 wxStringToStringHashMap m_headers; 75 bool m_read, 76 m_proxy_mode; 77 wxSockAddress *m_addr; 78 wxString m_post_buf; 79 int m_http_response; 80 wxString m_username; 81 wxString m_password; 82 83 DECLARE_DYNAMIC_CLASS(wxHTTP) 84 DECLARE_PROTOCOL(wxHTTP) 85 DECLARE_NO_COPY_CLASS(wxHTTP) 86 }; 87 88 #endif // wxUSE_PROTOCOL_HTTP 89 90 #endif // _WX_HTTP_H 91 92