2011-03-20 18:05:19 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: wx/protocol/http.h
|
|
|
|
// Purpose: HTTP protocol
|
|
|
|
// Author: Guilhem Lavaux
|
|
|
|
// Modified by: Simo Virokannas (authentication, Dec 2005)
|
|
|
|
// Created: August 1997
|
|
|
|
// Copyright: (c) 1997, 1998 Guilhem Lavaux
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_HTTP_H
|
|
|
|
#define _WX_HTTP_H
|
|
|
|
|
|
|
|
#include "wx/defs.h"
|
|
|
|
|
|
|
|
#if wxUSE_PROTOCOL_HTTP
|
|
|
|
|
|
|
|
#include "wx/hashmap.h"
|
|
|
|
#include "wx/protocol/protocol.h"
|
2012-03-18 01:12:27 +00:00
|
|
|
#include "wx/buffer.h"
|
2011-03-20 18:05:19 +00:00
|
|
|
|
|
|
|
class WXDLLIMPEXP_NET wxHTTP : public wxProtocol
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
wxHTTP();
|
|
|
|
virtual ~wxHTTP();
|
|
|
|
|
|
|
|
virtual bool Connect(const wxString& host, unsigned short port);
|
2016-06-26 05:25:29 +00:00
|
|
|
virtual bool Connect(const wxString& host) wxOVERRIDE { return Connect(host, 0); }
|
|
|
|
virtual bool Connect(const wxSockAddress& addr, bool wait = true) wxOVERRIDE;
|
|
|
|
bool Abort() wxOVERRIDE;
|
2011-03-20 18:05:19 +00:00
|
|
|
|
2016-06-26 05:25:29 +00:00
|
|
|
wxInputStream *GetInputStream(const wxString& path) wxOVERRIDE;
|
2011-03-20 18:05:19 +00:00
|
|
|
|
2016-06-26 05:25:29 +00:00
|
|
|
wxString GetContentType() const wxOVERRIDE;
|
2011-03-20 18:05:19 +00:00
|
|
|
wxString GetHeader(const wxString& header) const;
|
|
|
|
int GetResponse() const { return m_http_response; }
|
|
|
|
|
2013-09-22 22:44:55 +00:00
|
|
|
void SetMethod(const wxString& method) { m_method = method; }
|
2011-03-20 18:05:19 +00:00
|
|
|
void SetHeader(const wxString& header, const wxString& h_data);
|
2012-03-18 01:12:27 +00:00
|
|
|
bool SetPostText(const wxString& contentType,
|
|
|
|
const wxString& data,
|
|
|
|
const wxMBConv& conv = wxConvUTF8);
|
|
|
|
bool SetPostBuffer(const wxString& contentType, const wxMemoryBuffer& data);
|
2011-03-20 18:05:19 +00:00
|
|
|
void SetProxyMode(bool on);
|
|
|
|
|
|
|
|
/* Cookies */
|
|
|
|
wxString GetCookie(const wxString& cookie) const;
|
|
|
|
bool HasCookies() const { return m_cookies.size() > 0; }
|
|
|
|
|
2012-03-18 01:12:27 +00:00
|
|
|
// Use the other SetPostBuffer() overload or SetPostText() instead.
|
|
|
|
wxDEPRECATED(void SetPostBuffer(const wxString& post_buf));
|
|
|
|
|
2011-03-20 18:05:19 +00:00
|
|
|
protected:
|
|
|
|
typedef wxStringToStringHashMap::iterator wxHeaderIterator;
|
|
|
|
typedef wxStringToStringHashMap::const_iterator wxHeaderConstIterator;
|
|
|
|
typedef wxStringToStringHashMap::iterator wxCookieIterator;
|
|
|
|
typedef wxStringToStringHashMap::const_iterator wxCookieConstIterator;
|
|
|
|
|
2013-09-22 22:44:55 +00:00
|
|
|
bool BuildRequest(const wxString& path, const wxString& method);
|
2011-03-20 18:05:19 +00:00
|
|
|
void SendHeaders();
|
|
|
|
bool ParseHeaders();
|
|
|
|
|
|
|
|
wxString GenerateAuthString(const wxString& user, const wxString& pass) const;
|
|
|
|
|
|
|
|
// find the header in m_headers
|
|
|
|
wxHeaderIterator FindHeader(const wxString& header);
|
|
|
|
wxHeaderConstIterator FindHeader(const wxString& header) const;
|
|
|
|
wxCookieIterator FindCookie(const wxString& cookie);
|
|
|
|
wxCookieConstIterator FindCookie(const wxString& cookie) const;
|
|
|
|
|
|
|
|
// deletes the header value strings
|
|
|
|
void ClearHeaders();
|
|
|
|
void ClearCookies();
|
|
|
|
|
|
|
|
// internal variables:
|
|
|
|
|
2013-09-22 22:44:55 +00:00
|
|
|
wxString m_method;
|
2011-03-20 18:05:19 +00:00
|
|
|
wxStringToStringHashMap m_cookies;
|
|
|
|
|
|
|
|
wxStringToStringHashMap m_headers;
|
|
|
|
bool m_read,
|
|
|
|
m_proxy_mode;
|
|
|
|
wxSockAddress *m_addr;
|
2012-03-18 01:12:27 +00:00
|
|
|
wxMemoryBuffer m_postBuffer;
|
|
|
|
wxString m_contentType;
|
2011-03-20 18:05:19 +00:00
|
|
|
int m_http_response;
|
|
|
|
|
2016-06-26 05:25:29 +00:00
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxHTTP);
|
2011-03-20 18:05:19 +00:00
|
|
|
DECLARE_PROTOCOL(wxHTTP)
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxHTTP);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // wxUSE_PROTOCOL_HTTP
|
|
|
|
|
|
|
|
#endif // _WX_HTTP_H
|
|
|
|
|