#pragma hdrstop
#endif
+#if wxUSE_SOCKETS
+
#ifndef WX_PRECOMP
#endif
#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
wxString wxHTTP::GetContentType()
{
- return GetHeader("Content-Type");
+ return GetHeader(_T("Content-Type"));
}
void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
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();
}
if (line.Length() == 0)
break;
+ wxPrintf(_T("Header: %s\n"), WXSTRINGCAST line);
int pos = line.Find(':');
if (pos == -1)
return FALSE;
return FALSE;
}
- if (!addr->Service("http"))
+ if (!addr->Service(_T("http")))
addr->Service(80);
return TRUE;
{
char *tmp_buf;
char buf[HTTP_BSIZE];
+ const wxWX2MBbuf pathbuf = path.mb_str();
switch (req) {
case wxHTTP_GET:
return FALSE;
}
- sprintf(buf, "%s %s HTTP/1.0\n\r", tmp_buf, (const char *)path);
+ SaveState();
+ Notify(FALSE);
+ SetFlags(WAITALL);
+
+ sprintf(buf, "%s %s HTTP/1.0\n\r", tmp_buf, (const char*)pathbuf);
Write(buf, strlen(buf));
SendHeaders();
sprintf(buf, "\n\r");
wxString tmp_str;
m_error = GetLine(this, tmp_str);
- if (m_error != wxPROTO_NOERR)
+ if (m_error != wxPROTO_NOERR) {
+ RestoreState();
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:
m_error = wxPROTO_NOFILE;
+ RestoreState();
return FALSE;
}
- return ParseHeaders();
+ ret_value = ParseHeaders();
+ RestoreState();
+ return ret_value;
}
class wxHTTPStream : public wxSocketInputStream {
size_t m_httpsize;
wxHTTPStream(wxHTTP *http) : wxSocketInputStream(*http), m_http(http) {}
- size_t StreamSize() { return m_httpsize; }
+ size_t StreamSize() const { return m_httpsize; }
virtual ~wxHTTPStream(void) { m_http->Abort(); }
};
if (!BuildRequest(path, wxHTTP_GET))
return NULL;
- 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")));
return inp_stream;
}
+
+#endif
+ // wxUSE_SOCKETS