2011-06-21 24 views
2

私はマルチパートの投稿要求を送るのに助けが必要です。主な問題は、サーバーがリクエストのポストボディ部分を認識しないことです。サーバー側はアンドロイドで正常に動作していますが、QtとNetworkAccessManagerでは正常に動作していません。ここでQtマルチパート投稿の問題

はコードです:ここでは

私は(transferDataは、いくつかのテキストとQByteArrayである)のボディ部は、リクエストで送信するために行います。

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

試してみてください。ここでは

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"); 

は、ヘッダーです"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