QHttp::post und QHttp::request
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
QHttp::post und QHttp::request
Ich wollte per QHttp eine Postanfrage an eine PHP Datei senden hab aber absolut keine Ahnung wie das geht. Ich dachte man kann einfach QHttp::post dafür nehmen aber irgendwo habe ich gelesen das das nicht geht und man request nutzen muss.... aber bei request seh ich absolut nicht durch mit diesem ganzen header zeugs und deshalb wollte ich mal Fragen wie ich nun diese Postanfrage sende?!
Ich möchte lediglich einen 2 Namen an die PHP Datei übergeben....
Ich möchte lediglich einen 2 Namen an die PHP Datei übergeben....
Re: QHttp::post und QHttp::request
Für Firefox 1 gab es die schöne Erweiterung Live HTTP Headers. Damit konnte man schön mitverfolgen, was bei einem POST-Request verschickt wird. Es gibt aber auch andere externe Tools, die das machen. Damit guckst Du dir das an und der Rest ist etwas Fummelei, bis dann etwa sowas dabei raus kommt:madRenEGadE hat geschrieben:deshalb wollte ich mal Fragen wie ich nun diese Postanfrage sende?!
Code: Alles auswählen
QHttpRequestHeader header("POST", url.path());
header.setValue("Host", url.host());
header.setValue("User-Agent", "MyQtApp" + version);
header.setValue("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
header.setValue("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
header.setValue("Accept-Encoding", "gzip,deflate");
header.setValue("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
header.setValue("Keep-Alive", "300");
header.setValue("Connection", "keep-alive");
header.setValue("Referer", "MyQtApp " + version);
header.setValue("Authorization", "Basic SG9sem1hOmN1dDJzaXpl");
header.setValue("Content-Type", "multipart/form-data boundary=---------------------------125282808721657");
bytes = new QByteArray();
bytes->append("-----------------------------125282808721657\n"); // Das hier ist ein Dummy-Feldname, damit
bytes->append("Content-Disposition: form-data; name="upload"\n"); // das auch als POST wahr genommen wird
bytes->append("\nUploadFile\n");
// und jetzt kommen die einzelnen Files
QString name, dateiName;
file = new QFile();
for (int l=0; l<files.count(); l++)
{
QFileInfo fileInfo(files[l]);
file->setFileName(files[l]);
dateiName = fileInfo.fileName();
if (!file->exists())
{
printf("File %S doesn't exist.\n", files[l].utf16());
delete file;
file = 0;
exit(-1);
}
if (!file->open(QIODevice::ReadOnly))
{
printf("Unable to read the file %S: %S.",dateiName.utf16(), file->errorString().utf16());
delete file;
file = 0;
exit(-1);
}
bytes->append("-----------------------------125282808721657\n");
bytes->append("Content-Disposition: form-data; name="datei[" + QString::number(l));
bytes->append("]"; filename="" + dateiName + ""\n");
bytes->append("Content-length: " + QString::number(fileInfo.size()));
bytes->append("\nContent-Type: text/plain\n\n");
bytes->append(file->readAll());
file->close();
}
buffer = new QBuffer(bytes);
if (resultFile=="")
resultFile = "result.html";
QDir d;
if (d.exists(resultFile))
d.remove(resultFile);
logFile = new QFile(resultFile);
file->open(QIODevice::ReadWrite);
httpPostId = http->request(header, buffer, logFile);
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
Kein Beispiel nutzt request, aber Du kannst im Http-Beispiel den QHttp-Part durch QHttpRequestHeader ersetzen. Ich meinte auch das ganze Zusammenspiel mit den einzelnen Signalen.
Aus der post-Methode selbst bin ich auch noch nicht schlau geworden. Hab mich aber nicht weiter mit beschäftigt, da sie für meine Anforderungen eh nicht geeignet war.
Aus der post-Methode selbst bin ich auch noch nicht schlau geworden. Hab mich aber nicht weiter mit beschäftigt, da sie für meine Anforderungen eh nicht geeignet war.
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
http://downloads.mozdev.org/livehttphea ... s-0.12.xpi
bidde schön ^^
so also die header müssten stimmen aber ich glaube das die Zeile mit Data.append nich richtig ist aber das kann ich ja nicht mit LiveHttp Header nachgucken wie das richtig sein müsste.....
bidde schön ^^
Code: Alles auswählen
url.setUrl(Urlname);
QHttpRequestHeader header("POST", url.path());
header.setValue("Host", url.host());
header.setValue("User-Agent", "TR-Messager v0.1.1");
header.setValue("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
header.setValue("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
header.setValue("Accept-Encoding", "gzip,deflate");
header.setValue("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
header.setValue("Keep-Alive", "300");
header.setValue("Connection", "keep-alive");
header.setValue("Referer", "TR-Messager v0.1.1");
header.setValue("Content-Type", "application/x-www-form-urlencoded");
header.setValue("Content-Length", "20");
Data.append("username=madRenEGadE");
File.setFileName(Filename);
File.open(QIODevice::Truncate | QIODevice::WriteOnly);
Http.request(header, Data, &File);
Du musst doch eine Seite haben, mit der du das Skript korrekt ansprechen kannst. Ansonsten bastel dir kurz eine und dann schaust du dir an was da rüber geht.madRenEGadE hat geschrieben:ich glaube das die Zeile mit Data.append nich richtig ist aber das kann ich ja nicht mit LiveHttp Header nachgucken wie das richtig sein müsste.....
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
die seite gibt nur den text hallo aus und sollte dahinter den namen anzeigen den man per post mitgeschickt hat
http://www.the-reality.net/trm/checkVersion2.php
http://www.the-reality.net/trm/checkVersion2.php
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15