2011-06-21 29 views
2

我需要發送多部分發布請求的幫助。主要問題是服務器無法識別我的請求的帖子正文部分。服務器端與Android工作正常,但不與Qt和NetworkAccessManager。Qt多部分發布問題

下面是代碼:

在這裏,我讓身體部位與發送請求(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()); 

回答

2

嘗試設置「Content-Type」後添加「Content-Length」標題。價值應該像QString::number(postBody.length())。 (編輯:這並沒有解決問題)。

刪除新行(\ r \ n)前的額外空間。請將postBody.append(「\ r \ n」)更改爲postBody.append(「\ r \ n」)

+0

謝謝您的回答,但將尺寸更改爲長度不起作用。更多建議? – Rokker

+2

讓我們也嘗試刪除新行之前的額外空間(\ r \ n)。請將postBody.append(「\ r \ n」)更改爲postBody.append(「\ r \ n」) –

+0

就是這樣。謝謝阿齊茲,你救了我的一天。把你的評論作爲答覆,所以我可以接受它。 – Rokker