У меня возникла проблема загрузки файла .txt на мой сервер сервлетов Java с помощью Qt.Загрузите файл .txt на сервер с помощью HttpRequest в Qt
Я потратил на это 5 дней и попробовал много решений. Но никто из них не работал. Кто-нибудь может мне помочь?
Проблема в том, что код Qt может работать без ошибок. Но сервер не получил ничего от httprequest из Qt.
Это одно решение в Qt:
QFile file("dataToSend.txt");
nam = new QNetworkAccessManager(this);
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
QNetworkRequest r(QUrl("http://localhost:9999/server"));
QString bound="---------------------------723690991551375881941828858";
QByteArray data(QString("--"+bound+"\r\n").toAscii());
data += QString("--" + bound + "\r\n").toAscii();
data += "Content-Disposition: form-data; name=\"file\"; filename=\""+file.fileName()+"\"\r\n";
data += "Content-Type: text/plain\r\n\r\n";
file.open(QIODevice::ReadOnly);
data += file.readAll();
data += "\r\n";
data += QString("--" + bound + "\r\n").toAscii();
r.setRawHeader(QString("Content-Type").toAscii(),QString("multipart/form-data; boundary=" + bound).toAscii());
r.setRawHeader(QString("Content-Length").toAscii(), QString::number(data.length()).toAscii());
reply = nam->post(r,data);
reply=nam->get(r);
Это еще одно решение, оно не wokring ни:
nam = new QNetworkAccessManager(this);
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
QFile *file=new QFile("dataToSend.txt");
QNetworkRequest request(QUrl("http://localhost:9999/server"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-streamd");
if(!file->open(QIODevice::ReadOnly)){
qDebug("%s\n",qPrintable("can't open the file!"));
return;
}
// post data to server
reply= nam->post(request,file);
file->setParent(reply);
reply=nam->get(request);
что вы ожидаете от этих строк: 'ответа = Нам -> сообщения (запрос, файл); файл-> setParent (ответ); ответить = nam-> get (request); '? –
Когда вы говорите «ничего не получали», вы имеете в виду отсутствие соединения или сервлет не получает данные? Вы уверены в своем сервлете? – Koying