git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21819
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
- fixed bug with deleting entries at root level in wxFileConfig
- chkconf.h now includes platform-specific versions (for MSW
and Mac) which contain some tests that were in setup.h
- fixed bug with deleting entries at root level in wxFileConfig
- chkconf.h now includes platform-specific versions (for MSW
and Mac) which contain some tests that were in setup.h
-- Added event sink argument to wxEvtHandler::Connect()
+- added event sink argument to wxEvtHandler::Connect()
+- added support for POST method and alt ports to wxHTTP (Roger Chickering)
wxStringToStringHashMap m_headers;
bool m_read, m_proxy_mode;
wxSockAddress *m_addr;
wxStringToStringHashMap m_headers;
bool m_read, m_proxy_mode;
wxSockAddress *m_addr;
public:
wxHTTP();
~wxHTTP();
public:
wxHTTP();
~wxHTTP();
- bool Connect(const wxString& host);
+ bool Connect(const wxString& host, unsigned short port = 0);
bool Connect(wxSockAddress& addr, bool wait);
bool Abort();
wxInputStream *GetInputStream(const wxString& path);
bool Connect(wxSockAddress& addr, bool wait);
bool Abort();
wxInputStream *GetInputStream(const wxString& path);
void SetHeader(const wxString& header, const wxString& h_data);
wxString GetHeader(const wxString& header);
void SetHeader(const wxString& header, const wxString& h_data);
wxString GetHeader(const wxString& header);
+ void SetPostBuffer(const wxString& post_buf);
void SetProxyMode(bool on);
protected:
typedef enum {
wxHTTP_GET,
void SetProxyMode(bool on);
protected:
typedef enum {
wxHTTP_GET,
wxHTTP_HEAD
} wxHTTP_Req;
bool BuildRequest(const wxString& path, wxHTTP_Req req);
wxHTTP_HEAD
} wxHTTP_Req;
bool BuildRequest(const wxString& path, wxHTTP_Req req);
m_addr = NULL;
m_read = FALSE;
m_proxy_mode = FALSE;
m_addr = NULL;
m_read = FALSE;
m_proxy_mode = FALSE;
+ m_post_buf = wxEmptyString;
SetNotify(wxSOCKET_LOST_FLAG);
}
SetNotify(wxSOCKET_LOST_FLAG);
}
+void wxHTTP::SetPostBuffer(const wxString& post_buf)
+{
+ m_post_buf = post_buf;
+}
+
void wxHTTP::SendHeaders()
{
typedef wxStringToStringHashMap::iterator iterator;
void wxHTTP::SendHeaders()
{
typedef wxStringToStringHashMap::iterator iterator;
-bool wxHTTP::Connect(const wxString& host)
+bool wxHTTP::Connect(const wxString& host, unsigned short port)
- if (!addr->Service(wxT("http")))
+ if ( port ) addr->Service(port);
+ else if (!addr->Service(wxT("http")))
addr->Service(80);
SetHeader(wxT("Host"), host);
addr->Service(80);
SetHeader(wxT("Host"), host);
case wxHTTP_GET:
request = wxT("GET");
break;
case wxHTTP_GET:
request = wxT("GET");
break;
+ case wxHTTP_POST:
+ tmp_buf = wxT("POST");
+ break;
SendHeaders();
Write("\r\n", 2);
SendHeaders();
Write("\r\n", 2);
+ if ( req == wxHTTP_POST ) {
+ Write(m_post_buf, m_post_buf.Len());
+ m_post_buf = wxEmptyString;
+ }
+
wxString tmp_str;
m_perr = GetLine(this, tmp_str);
if (m_perr != wxPROTO_NOERR) {
wxString tmp_str;
m_perr = GetLine(this, tmp_str);
if (m_perr != wxPROTO_NOERR) {
- if (!BuildRequest(path, wxHTTP_GET))
+ if (!BuildRequest(path, m_post_buf.IsEmpty() ? wxHTTP_GET : wxHTTP_POST))
return NULL;
inp_stream = new wxHTTPStream(this);
return NULL;
inp_stream = new wxHTTPStream(this);