QHttp::post und QHttp::request

Alles rund um die Programmierung mit Qt
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

So, hier das Ergebnis von dem was LiveHTTPHeaders protokolliert hat:

Code: Alles auswählen

http://www.the-reality.net/trm/checkVersion2.php

POST /trm/checkVersion2.php HTTP/1.1
Host: www.the-reality.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://localhost/test.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
username=Qt-Forum&ok=ok
Die letzte 3 Zeilen enthalten alles was Du suchst. Das musst Du rüberschicken, achte auf die richtige Längenangabe. ok war Name und Value eine Submit-Buttons, den man auf einer Webseite nunmal braucht.
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

genau so hab ich es eigentlich auch.... bekomme jetz nach einer änderung immer folgendes zurückgesendet:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/checkVersion.php<br />
does not allow request data with POST requests, or the amount of data provided in
the request exceeds the capacity limit.
<hr />
<address>Apache/2.0.49 (Win32) mod_ssl/2.0.49 OpenSSL/0.9.7d PHP/4.3.6 mod_autoindex/color Server at localhost Port 80</address>
</body>
</html>
Hallo 
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ich hab jetzt leider keine Zeit mehr das weiter zu verfolgen, aber da Du nur Text verschicken willst, versuch es doch noch mal mit post:

Code: Alles auswählen

QHttp* http = new QHttp();
http->setHost("http://www.the-reality.net");
http->post("trm/checkVersion2.php", "username=Qt-Forum", file);
madRenEGadE
Beiträge: 52
Registriert: 10. Februar 2006 15:15

Beitrag von madRenEGadE »

mit post krieg ich "400 Bad Request" zurück
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Kommt etwas spät die Antwort, aber der zuständige Entwickler bei den Trolls war nicht erreichbar und deshalb bekam ich heute erst Antwort. Here it is:
The reason for this is basically that QHttp::post() does not send a
Content-Type header as part of the POST request, and some web servers
expects one of these, since they may not want or be able to guess the
type from the content. QHttp::post() should perhaps take one additional
argument describing the content type. We'll see if this can be changed
for a future release.

Thanks for bringing this to our attention.
cyrexo
Beiträge: 1
Registriert: 15. September 2007 23:02

Beitrag von cyrexo »

madRenEGadE hat geschrieben:genau so hab ich es eigentlich auch.... bekomme jetz nach einer änderung immer folgendes zurückgesendet:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/checkVersion.php<br />
does not allow request data with POST requests, or the amount of data provided in
the request exceeds the capacity limit.
<hr />
<address>Apache/2.0.49 (Win32) mod_ssl/2.0.49 OpenSSL/0.9.7d PHP/4.3.6 mod_autoindex/color Server at localhost Port 80</address>
</body>
</html>
Hallo 
Es ist jetzt sicher ein bisschen lang her das diese Frage gestellt wurde aber ich hab trozdem eine Lösung gefunden, für Leute wie mich die sie brauchen.

Der trick ist eig ganz einfach.

Statt den Content-Type und Content-Length über setValue zu setzen,
muss die jeweilige Methode des QHttpRequestHeader Objektes benutz werden:

setContentType
setContentLength
Antworten