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;
wxString AsString(wxMBConv* conv = NULL) const;
wxString AsString() const;
bool Init();

View File

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

View File

@ -345,16 +345,13 @@ wxString wxWebResponse::GetSuggestedFileName() const
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 )
{
// TODO: try to determine encoding type from content-type header
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
return wxString();