Qt 多部分帖子问题
Posted
技术标签:
【中文标题】Qt 多部分帖子问题【英文标题】:Qt multipart post problem 【发布时间】:2011-06-21 09:45:13 【问题描述】:我在发送多部分发布请求方面需要帮助。主要问题是服务器无法识别我请求的帖子正文部分。服务器端在 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());
【问题讨论】:
【参考方案1】:尝试在设置“Content-Type”后添加“Content-Length”标头。值应该类似于QString::number(postBody.length())
。 (已编辑:这并没有解决问题)。
在新行 (\r\n) 起作用之前删除多余的空间。请将 postBody.append(" \r\n") 更改为 postBody.append("\r\n")
【讨论】:
感谢您的回答,但将大小更改为长度不起作用。更多建议? 让我们也尝试删除新行之前的多余空格 (\r\n)。请将 postBody.append(" \r\n") 更改为 postBody.append("\r\n") 就是这样。谢谢阿齐兹,你拯救了我的一天。将您的评论作为回复,以便我接受。【参考方案2】:自 Qt 4.8 以来,出现了 QHttpMultiPart 类,它可以解决问题。
【讨论】:
以上是关于Qt 多部分帖子问题的主要内容,如果未能解决你的问题,请参考以下文章