Hallo,
ich wuerde gerne einen Http PUT Request absetzen und mit diesem ein Dokument an einen Server verschicken. Mich wuerde interessieren, ob mir QHttp (in Verbindung mit QHttpRequestHeader vielleicht) dies ermoeglicht. Waere eine schoene Sache. Konnte dazu leider keine Informationen finden. Vielleicht weiß das ja jemand ...
Vielen Dank im Voraus!
QHttp und Put Request?
Ich schreib jetzt mal ohne es nachgeprüft zu haben:
Ist es nicht so, daß PUT auf die max. Länge einer URL beschränkt ist (~1024 Zeichen) und POST auf (je nach Serverstandardeinstellung, aber meist) 2-8MByte. Außerdem ist ja PUT nichts längeres als eine URL mit zusätzlichem Anhang (meist ?...). Somit müßtest du ja nur eine passende URL erstellen und diese abfragen.
Ist es nicht so, daß PUT auf die max. Länge einer URL beschränkt ist (~1024 Zeichen) und POST auf (je nach Serverstandardeinstellung, aber meist) 2-8MByte. Außerdem ist ja PUT nichts längeres als eine URL mit zusätzlichem Anhang (meist ?...). Somit müßtest du ja nur eine passende URL erstellen und diese abfragen.
Muesste es nicht moeglich sein, mit QHttpRequestHeader PUT zu spefizieren und dann mit QHttp mit request Daten zu senden?
[/code]
Code: Alles auswählen
request ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 )
Die Methode PUT senden ist etwa 1/3 schneller als Post... warum? weiss ich nicht...fvonx hat geschrieben:Muesste es nicht moeglich sein, mit QHttpRequestHeader PUT zu spefizieren und dann mit QHttp mit request Daten zu senden?
[/code]Code: Alles auswählen
request ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 )
wenn du PUT zu einen webdav server sendest dan etwa so:
http://qtwdav.googlecode.com/svn/trunk/ ... v/davput.h
zu einem Php script so:
Code: Alles auswählen
public:
PutSender( QUrl urigo , const QString locfile , QObject * parent = 0 )
{
urigoup = QUrl(urigo);
doneCall =0;
readyCall =0;
setHost(urigoup.host(), 80);
filehaving = true;
primariFile = locfile;
BeamUp = new QFile(locfile); /* upload file */
if (BeamUp->exists()) {
BeamUp->open(QIODevice::ReadOnly);
header.setRequest("PUT",urigoup.path(),1,1);
header.setValue("Host",urigoup.host());
header.setValue("User-Agent", WEBAGENTNAME );
header.setValue("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
header.setValue("Accept-Language", "it,de-de;q=0.8,it-it;q=0.6,en-us;q=0.4,en;q=0.2");
header.setValue("Connection", "keep-alive");
} else {
filehaving = false;
}
}
void Start()
{
if (filehaving) {
david = request(header,BeamUp,0);
//////////std::cout << "Start file..:" << qPrintable(primariFile) << std::endl;
/////////////std::cout << "Start request ID:" << david << " host:" << qPrintable(urigoup.host()) << " path:" << qPrintable(urigoup.path()) << std::endl;
connect(this, SIGNAL(done(bool)), this, SLOT(Exitdone(bool)));
connect(this, SIGNAL(dataSendProgress(int, int)), this, SLOT(SendStatus(int, int)));
connect(this, SIGNAL(readyRead(const QHttpResponseHeader &)), this, SLOT(SaveData(const QHttpResponseHeader &)));
} else {
QMessageBox::information(0, tr("Error upload file."),tr("You file %1 is brocken or not valid.").arg(primariFile));
}
}
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt