Remove wxWebResponse::AsString() conversion parameter

It doesn't make much sense to specify the conversion here, it would
ideally be taken from the response Content-Type header itself and
currently is just assumed to be UTF-8 anyhow.

Also implement fallback to Latin-1 to avoid losing the data entirely if
it's not in UTF-8.
This commit is contained in:
Vadim Zeitlin
2020-12-13 01:11:47 +01:00
parent fd040b702d
commit 1c61fe6baf
3 changed files with 6 additions and 11 deletions

View File

@@ -152,7 +152,7 @@ public:
virtual wxString GetSuggestedFileName() const; virtual wxString GetSuggestedFileName() const;
wxString AsString(wxMBConv* conv = NULL) const; wxString AsString() const;
bool Init(); bool Init();

View File

@@ -450,11 +450,9 @@ public:
/** /**
Returns all response data as a string. Returns all response data as a string.
@param conv wxMBConv used to convert the response to a string. This is mostly useful for debugging or diagnostics.
If @c NULL, the conversion will be determined by
response headers. The default is UTF-8.
*/ */
wxString AsString(wxMBConv* conv = NULL) const; wxString AsString() const;
}; };
/** /**

View File

@@ -345,16 +345,13 @@ wxString wxWebResponse::GetSuggestedFileName() const
return suggestedFilename; return suggestedFilename;
} }
wxString wxWebResponse::AsString(wxMBConv * conv) const wxString wxWebResponse::AsString() const
{ {
// TODO: try to determine encoding type from content-type header
if ( !conv )
conv = &wxConvUTF8;
if ( m_request.GetStorage() == wxWebRequest::Storage_Memory ) if ( m_request.GetStorage() == wxWebRequest::Storage_Memory )
{ {
// TODO: try to determine encoding type from content-type header
size_t outLen = 0; size_t outLen = 0;
return conv->cMB2WC((const char*)m_readBuffer.GetData(), m_readBuffer.GetDataLen(), &outLen); return wxConvWhateverWorks.cMB2WC((const char*)m_readBuffer.GetData(), m_readBuffer.GetDataLen(), &outLen);
} }
else else
return wxString(); return wxString();