Qt multipart post задача - PullRequest
       7

Qt multipart post задача

2 голосов
/ 21 июня 2011

Мне нужна помощь с отправкой многочастного почтового запроса. Основная проблема в том, что сервер не распознает часть тела моего запроса. Серверная часть работает нормально с 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());

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Попробуйте добавить заголовок «Content-Length» после настройки «Content-Type». Значение должно быть что-то вроде QString::number(postBody.length()). (Отредактировано: это не решило проблему).

Удаление лишнего пробела до того, как новая строка (\ r \ n) сработала. Пожалуйста, измените postBody.append ("\ r \ n") на postBody.append ("\ r \ n")

1 голос
/ 19 ноября 2014

Начиная с Qt 4.8 появился QHttpMultiPart класс, который добивается цели.

...