X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/35a4dab713ccc16c2414aa18d360aa40929fd60c..da175b2ce4dc35cc4c0baa8bbdc16bf4de6c7684:/src/common/http.cpp?ds=sidebyside diff --git a/src/common/http.cpp b/src/common/http.cpp index 9d08ee7d80..c13c7a1bb7 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -10,21 +10,18 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "http.h" + #pragma implementation "http.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #if wxUSE_SOCKETS -#ifndef WX_PRECOMP -#endif - #include #include #include "wx/string.h" @@ -36,7 +33,7 @@ #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxHTTP, wxProtocol) -IMPLEMENT_PROTOCOL(wxHTTP, "http", "80", TRUE) +IMPLEMENT_PROTOCOL(wxHTTP, _T("http"), _T("80"), TRUE) #endif #define HTTP_BSIZE 2048 @@ -66,7 +63,7 @@ wxHTTP::~wxHTTP() wxString wxHTTP::GetContentType() { - return GetHeader("Content-Type"); + return GetHeader(_T("Content-Type")); } void wxHTTP::SetHeader(const wxString& header, const wxString& h_data) @@ -104,9 +101,10 @@ void wxHTTP::SendHeaders() wxString *str = (wxString *)head->Data(); wxString buf; - buf.Printf("%s: %s\n\r", head->GetKeyString(), str->GetData()); + buf.Printf(_T("%s: %s\n\r"), head->GetKeyString(), str->GetData()); - Write(buf, buf.Len()); + const wxWX2MBbuf cbuf = buf.mb_str(); + Write(cbuf, strlen(cbuf)); head = head->Next(); } @@ -115,6 +113,7 @@ void wxHTTP::SendHeaders() bool wxHTTP::ParseHeaders() { wxString line; + wxStringTokenizer tokenzr; m_headers.Clear(); m_read = TRUE; @@ -127,17 +126,12 @@ bool wxHTTP::ParseHeaders() if (line.Length() == 0) break; - printf("Header: %s\n", WXSTRINGCAST line); - int pos = line.Find(':'); - if (pos == -1) + tokenzr.SetString(line, " :\t\n\r"); + if (!tokenzr.HasMoreTokens()) return FALSE; - wxString left_str = line(0, pos); - wxString right_str = line(pos+1, line.Length()); - - right_str = right_str.Strip(wxString::leading); - - wxString *str = new wxString(right_str); + wxString left_str = tokenzr.GetNextToken(); + wxString *str = new wxString(tokenzr.GetNextToken()); m_headers.Append(left_str, (wxObject *) str); } @@ -163,7 +157,7 @@ bool wxHTTP::Connect(const wxString& host) return FALSE; } - if (!addr->Service("http")) + if (!addr->Service(_T("http"))) addr->Service(80); return TRUE; @@ -186,6 +180,7 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) { char *tmp_buf; char buf[HTTP_BSIZE]; + const wxWX2MBbuf pathbuf = path.mb_str(); switch (req) { case wxHTTP_GET: @@ -196,10 +191,10 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) } SaveState(); + SetFlags(NONE); Notify(FALSE); - SetFlags(WAITALL); - sprintf(buf, "%s %s HTTP/1.0\n\r", tmp_buf, (const char *)path); + sprintf(buf, "%s %s\n\r", tmp_buf, (const char*) pathbuf); Write(buf, strlen(buf)); SendHeaders(); sprintf(buf, "\n\r"); @@ -213,22 +208,22 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) return FALSE; } - if (!tmp_str.Contains("HTTP/")) { + if (!tmp_str.Contains(_T("HTTP/"))) { // TODO: support HTTP v0.9 which can have no header. - SetHeader("Content-Length", "-1"); - SetHeader("Content-Type", "none/none"); + SetHeader(_T("Content-Length"), _T("-1")); + SetHeader(_T("Content-Type"), _T("none/none")); RestoreState(); return TRUE; } - wxStringTokenizer token(tmp_str,' '); + wxStringTokenizer token(tmp_str,_T(' ')); wxString tmp_str2; bool ret_value; token.NextToken(); tmp_str2 = token.NextToken(); - switch (atoi(tmp_str2)) { + switch (wxAtoi(tmp_str2)) { case 200: break; default: @@ -272,10 +267,11 @@ wxInputStream *wxHTTP::GetInputStream(const wxString& path) if (!BuildRequest(path, wxHTTP_GET)) return NULL; - printf("Len = %s\n", WXSTRINGCAST GetHeader("Content-Length")); - if (!GetHeader("Content-Length").IsEmpty()) - inp_stream->m_httpsize = atoi(WXSTRINGCAST GetHeader("Content-Length")); + wxPrintf(_T("Len = %s\n"), WXSTRINGCAST GetHeader(_T("Content-Length"))); + if (!GetHeader(_T("Content-Length")).IsEmpty()) + inp_stream->m_httpsize = wxAtoi(WXSTRINGCAST GetHeader(_T("Content-Length"))); + SetFlags(WAITALL); return inp_stream; }