wasm: fix empty body on POST
this also optimizes network post method handling Task-number: QTBUG-75660 Change-Id: Ibb0d01f2cc2b2bc7802598c4f6f04b04882c12ca Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
aa8d3f90a4
commit
800941df89
@ -235,7 +235,7 @@ void QNetworkReplyWasmImpl::close()
|
|||||||
void QNetworkReplyWasmImpl::abort()
|
void QNetworkReplyWasmImpl::abort()
|
||||||
{
|
{
|
||||||
Q_D(const QNetworkReplyWasmImpl);
|
Q_D(const QNetworkReplyWasmImpl);
|
||||||
setError( QNetworkReply::OperationCanceledError, "Operation canceled" );
|
setError( QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled"));
|
||||||
d->doAbort();
|
d->doAbort();
|
||||||
|
|
||||||
close();
|
close();
|
||||||
@ -328,8 +328,6 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
|
|||||||
m_xhr = val::global("XMLHttpRequest").new_();
|
m_xhr = val::global("XMLHttpRequest").new_();
|
||||||
std::string verb = q->methodName().toStdString();
|
std::string verb = q->methodName().toStdString();
|
||||||
|
|
||||||
QString extraDataString;
|
|
||||||
|
|
||||||
m_xhr.call<void>("open", verb, request.url().toString().toStdString());
|
m_xhr.call<void>("open", verb, request.url().toString().toStdString());
|
||||||
|
|
||||||
m_xhr.set("onerror", val::module_property("qt_QNetworkReplyWasmImplPrivate_requestErrorCallback"));
|
m_xhr.set("onerror", val::module_property("qt_QNetworkReplyWasmImplPrivate_requestErrorCallback"));
|
||||||
@ -348,30 +346,12 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
|
|||||||
if (outgoingData) // data from post request
|
if (outgoingData) // data from post request
|
||||||
extraData = outgoingData->readAll();
|
extraData = outgoingData->readAll();
|
||||||
|
|
||||||
if (contentType.contains("text") ||
|
if (!extraData.isEmpty()) {
|
||||||
contentType.contains("json") ||
|
dataToSend = val(typed_memory_view(extraData.size(),
|
||||||
contentType.contains("form")) {
|
reinterpret_cast<const unsigned char *>
|
||||||
if (extraData.size() > 0)
|
(extraData.constData())));
|
||||||
extraDataString.fromUtf8(extraData);
|
|
||||||
}
|
|
||||||
if (contentType.contains("json")) {
|
|
||||||
if (!extraDataString.isEmpty()) {
|
|
||||||
m_xhr.set("responseType", val("json"));
|
|
||||||
dataToSend = val(extraDataString.toStdString());
|
|
||||||
}
|
|
||||||
} else if (contentType.contains("form")) { //construct form data
|
|
||||||
if (!extraDataString.isEmpty()) {
|
|
||||||
val formData = val::global("FormData").new_();
|
|
||||||
QStringList formList = extraDataString.split('&');
|
|
||||||
|
|
||||||
for (auto formEntry : formList) {
|
|
||||||
formData.call<void>("append", formEntry.split('=')[0].toStdString(), formEntry.split('=')[1].toStdString());
|
|
||||||
}
|
|
||||||
dataToSend = formData;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
m_xhr.set("responseType", val("blob"));
|
|
||||||
}
|
}
|
||||||
|
m_xhr.set("responseType", val("blob"));
|
||||||
// set request headers
|
// set request headers
|
||||||
for (auto header : request.rawHeaderList()) {
|
for (auto header : request.rawHeaderList()) {
|
||||||
m_xhr.call<void>("setRequestHeader", header.toStdString(), request.rawHeader(header).toStdString());
|
m_xhr.call<void>("setRequestHeader", header.toStdString(), request.rawHeader(header).toStdString());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user