0
我有一個使用Qt將.txt文件上傳到我的Java servlet服務器的問題。上傳.txt文件到服務器使用Qt中的HttpRequest
我花了5天的時間,並嘗試了很多解決方案。但他們都沒有工作。有人可以幫助我嗎?
問題是,Qt代碼可以正常工作。但服務器沒有收到來自Qt的httprequest的任何信息。
這是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);
這是另一種解決方案,它不工作呢既不:
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);
你所說的這些行預計:'回覆=南 - >柱(請求,文件); file-> setParent(reply); reply = nam-> get(request);'? – 2012-03-12 14:18:17
當你說「沒有收到任何東西」時,你的意思是沒有連接或者servlet沒有收到數據?你確定你的servlet嗎? – Koying 2012-03-12 14:29:23