QHttp und Put Request?

Alles rund um die Programmierung mit Qt
Antworten
fvonx
Beiträge: 8
Registriert: 16. Oktober 2007 11:10

QHttp und Put Request?

Beitrag von fvonx »

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!
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Beitrag von Deever »

HTTP PUT? Warum will man das verwenden? Verwende doch wie alle POST?

Gruß,
/dev
fvonx
Beiträge: 8
Registriert: 16. Oktober 2007 11:10

Beitrag von fvonx »

Ich habe geahnt, dass man mir die Frage stellt. Leider muss ich einen Http Put machen, da es der Server so verlangt. :/
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

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.
fvonx
Beiträge: 8
Registriert: 16. Oktober 2007 11:10

Beitrag von fvonx »

Muesste es nicht moeglich sein, mit QHttpRequestHeader PUT zu spefizieren und dann mit QHttp mit request Daten zu senden?

Code: Alles auswählen

request ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 )
[/code]
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

fvonx hat geschrieben:Muesste es nicht moeglich sein, mit QHttpRequestHeader PUT zu spefizieren und dann mit QHttp mit request Daten zu senden?

Code: Alles auswählen

request ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 )
[/code]
Die Methode PUT senden ist etwa 1/3 schneller als Post... warum? weiss ich nicht...

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));
    }
}

Cookie und password richtig setzen dann geht es auch....
.........................
speack português italiano deutsch english castellà qt
fvonx
Beiträge: 8
Registriert: 16. Oktober 2007 11:10

Beitrag von fvonx »

Dankeschoen. War sehr hilfreich.
Antworten