(blindly) fixed header case confusion (replacement for patch 763760)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
8a000b6b9e
commit
71414756b2
@ -20,15 +20,8 @@
|
||||
|
||||
WX_DECLARE_EXPORTED_STRING_HASH_MAP( wxString, wxStringToStringHashMap );
|
||||
|
||||
class WXDLLIMPEXP_BASE wxHTTP : public wxProtocol {
|
||||
DECLARE_DYNAMIC_CLASS(wxHTTP)
|
||||
DECLARE_PROTOCOL(wxHTTP)
|
||||
protected:
|
||||
wxProtocolError m_perr;
|
||||
wxStringToStringHashMap m_headers;
|
||||
bool m_read, m_proxy_mode;
|
||||
wxSockAddress *m_addr;
|
||||
wxString m_post_buf;
|
||||
class WXDLLIMPEXP_BASE wxHTTP : public wxProtocol
|
||||
{
|
||||
public:
|
||||
wxHTTP();
|
||||
~wxHTTP();
|
||||
@ -41,25 +34,41 @@ public:
|
||||
wxString GetContentType();
|
||||
|
||||
void SetHeader(const wxString& header, const wxString& h_data);
|
||||
wxString GetHeader(const wxString& header);
|
||||
wxString GetHeader(const wxString& header) const;
|
||||
void SetPostBuffer(const wxString& post_buf);
|
||||
|
||||
void SetProxyMode(bool on);
|
||||
|
||||
protected:
|
||||
typedef enum {
|
||||
enum wxHTTP_Req
|
||||
{
|
||||
wxHTTP_GET,
|
||||
wxHTTP_POST,
|
||||
wxHTTP_HEAD
|
||||
} wxHTTP_Req;
|
||||
};
|
||||
|
||||
typedef wxStringToStringHashMap::iterator wxHeaderIterator;
|
||||
|
||||
bool BuildRequest(const wxString& path, wxHTTP_Req req);
|
||||
void SendHeaders();
|
||||
bool ParseHeaders();
|
||||
|
||||
// find the header in m_headers
|
||||
wxHeaderIterator FindHeader(const wxString& header) const;
|
||||
|
||||
// deletes the header value strings
|
||||
void ClearHeaders();
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxHTTP)
|
||||
wxProtocolError m_perr;
|
||||
wxStringToStringHashMap m_headers;
|
||||
bool m_read,
|
||||
m_proxy_mode;
|
||||
wxSockAddress *m_addr;
|
||||
wxString m_post_buf;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxHTTP)
|
||||
DECLARE_PROTOCOL(wxHTTP)
|
||||
DECLARE_NO_COPY_CLASS(wxHTTP)
|
||||
};
|
||||
|
||||
#endif // wxUSE_PROTOCOL_HTTP
|
||||
|
@ -70,6 +70,21 @@ void wxHTTP::SetProxyMode(bool on)
|
||||
m_proxy_mode = on;
|
||||
}
|
||||
|
||||
wxHTTP::wxHeaderIterator wxHTTP::FindHeader(const wxString& header) const
|
||||
{
|
||||
// we can't convert between const_iterator to iterator otherwise...
|
||||
wxStringToStringHashMap& headers = (wxStringToStringHashMap&)m_headers;
|
||||
|
||||
wxHeaderIterator it = headers.begin();
|
||||
for ( wxHeaderIterator en = headers.end(); it != en; ++it )
|
||||
{
|
||||
if ( wxStricmp(it->first, header) == 0 )
|
||||
break;
|
||||
}
|
||||
|
||||
return it;
|
||||
}
|
||||
|
||||
void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
|
||||
{
|
||||
if (m_read) {
|
||||
@ -77,26 +92,23 @@ void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
|
||||
m_read = FALSE;
|
||||
}
|
||||
|
||||
wxStringToStringHashMap::iterator it = m_headers.find(header);
|
||||
wxHeaderIterator it = FindHeader(header);
|
||||
if (it != m_headers.end())
|
||||
it->second = h_data;
|
||||
it->second = h_data;
|
||||
else
|
||||
m_headers[header.Upper()] = h_data;
|
||||
m_headers[header] = h_data;
|
||||
}
|
||||
|
||||
wxString wxHTTP::GetHeader(const wxString& header)
|
||||
wxString wxHTTP::GetHeader(const wxString& header) const
|
||||
{
|
||||
wxStringToStringHashMap::iterator it = m_headers.find(header.Upper());
|
||||
wxHeaderIterator it = FindHeader(header);
|
||||
|
||||
if (it == m_headers.end())
|
||||
return wxEmptyString;
|
||||
|
||||
return it->second;
|
||||
return it == m_headers.end() ? wxEmptyString : it->second;
|
||||
}
|
||||
|
||||
void wxHTTP::SetPostBuffer(const wxString& post_buf)
|
||||
{
|
||||
m_post_buf = post_buf;
|
||||
m_post_buf = post_buf;
|
||||
}
|
||||
|
||||
void wxHTTP::SendHeaders()
|
||||
@ -124,10 +136,11 @@ bool wxHTTP::ParseHeaders()
|
||||
#if defined(__VISAGECPP__)
|
||||
// VA just can't stand while(1)
|
||||
bool bOs2var = TRUE;
|
||||
while(bOs2var) {
|
||||
while(bOs2var)
|
||||
#else
|
||||
while (1) {
|
||||
while (1)
|
||||
#endif
|
||||
{
|
||||
m_perr = GetLine(this, line);
|
||||
if (m_perr != wxPROTO_NOERR)
|
||||
return FALSE;
|
||||
@ -136,8 +149,6 @@ bool wxHTTP::ParseHeaders()
|
||||
break;
|
||||
|
||||
wxString left_str = line.BeforeFirst(':');
|
||||
left_str.MakeUpper();
|
||||
|
||||
m_headers[left_str] = line.AfterFirst(':').Strip(wxString::both);
|
||||
}
|
||||
return TRUE;
|
||||
|
Loading…
Reference in New Issue
Block a user