我需要帮助发送多部分帖子请求。主要问题是服务器无法识别我的请求的帖子正文部分。服务器端可以正常使用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());
答案 0 :(得分:2)
设置“Content-Type”后尝试添加“Content-Length”标题。值应该类似于QString::number(postBody.length())
。 (编辑:这没有解决问题)。
删除新行(\ r \ n)之前的额外空格。请将postBody.append(“\ r \ n”)更改为postBody.append(“\ r \ n”)
答案 1 :(得分:1)
从Qt 4.8开始,QHttpMultiPart类出现了这个技巧。