2

我在发送多部分发布请求方面需要帮助。主要问题是服务器无法识别我请求的帖子正文部分。服务器端在 android 上运行良好,但在 Qt 和 NetworkAccessManager 上运行良好。

这是代码:

在这里,我将 bodyPart 与请求一起发送(transferData 是一个带有一些文本的 QByteArray):

postBody.append("\r\n--"+ boundary + "\r\n");
postBody.append("Content-Disposition: form-data; name=\"auth\" \r\n");
postBody.append(" \r\n");
postBody.append(auth + " \r\n");
postBody.append("--"+ boundary + "\r\n");
postBody.append("Content-Disposition: form-data; name=\"upload-test-data\" \r\n");
postBody.append(" \r\n");
postBody.append(transferData + " \r\n");
postBody.append("--"+ boundary + "\r\n");
postBody.append("Content-Disposition: form-data; name=\"upload-checksum\" \r\n");
postBody.append(" \r\n");
postBody.append(checksum.toHex() + " \r\n");
postBody.append("\r\n--" + boundary + "--\r\n");

这是标题:

request.setRawHeader("User-Agent", "MyApp 1.0");
request.setRawHeader("Content-Type", "multipart/form-data; boundary="+boundary.toAscii());
request.setHeader(QNetworkRequest::ContentLengthHeader, QString::number(postBody.size()).toAscii());
4

2 回答 2

2

在设置“Content-Type”后尝试添加“Content-Length”标头。值应该类似于QString::number(postBody.length()). (编辑:这并没有解决问题)。

在新行 (\r\n) 起作用之前删除额外的空间。请将 postBody.append(" \r\n") 更改为 postBody.append("\r\n")

于 2011-06-21T09:56:54.370 回答
1

从 Qt 4.8 开始,出现了 QHttpMultiPart类来解决问题。

于 2014-11-18T22:00:32.647 回答