在Qt中使用HttpRequest将.txt文件上载到服务器
我在使用Qt将.txt文件上传到JavaServlet服务器时遇到了一个问题 我花了5天的时间,尝试了很多解决方案。但没有一个成功。有人能帮我吗 问题在于Qt代码可以正常工作。但是服务器没有收到来自Qt的任何httprequest请求。 这是Qt中的一种解决方案:在Qt中使用HttpRequest将.txt文件上载到服务器,qt,Qt,我在使用Qt将.txt文件上传到JavaServlet服务器时遇到了一个问题 我花了5天的时间,尝试了很多解决方案。但没有一个成功。有人能帮我吗 问题在于Qt代码可以正常工作。但是服务器没有收到来自Qt的任何httprequest请求。 这是Qt中的一种解决方案: QFile file("dataToSend.txt"); nam = new QNetworkAccessManager(this); QObject::connect(nam, SIGNAL(finished(QNetworkRe
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);
您不能post()
将某些内容发送到服务器,下面的一行执行get()
以期望看到该文件。
通常您必须发布,等待post
完成,然后才能看到修改。。
有很多链接你可以用来做正确的事情你对这些行的期望是什么:
reply=nam->post(请求,文件);文件->设置父项(回复);回复=nam->get(请求)代码>?当您说“没有收到任何东西”时,您的意思是没有连接还是servlet没有收到数据?你确定你的servlet吗?