Hilfe bei Qt/C++

Status
Not open for further replies.

xenos

Linke Zecke
24 Apr 2014
2,475
4,016
#1
Hey Freunde.
Ich brauche ein wenig Hilfe bei C++ bzw. auf Qt bezogen.
Ich möchte folgendes erreichen:
Ich hab 3 Werte welche aus Inputs ausgelesen werden (dropdown liste, 2 textboxen)
Diese sollen jetzt an ein PHP Script weitergeleitet werden, via den URL-Parametern (sprich index.php?name=marlon&aufgabe=nerfnet&tag=montag)
Das PHP Script gibt dann einen bestimmten Wert aus welchen Ich als string speichern möchte.

Ich hab mich schon ein bisschen mit Google ausseinandergesetzt, jedoch kam ich auch nicht wirklich viiiiiel weiter.
C++:
QByteArray abfrage;
    QNetworkAccessManager *nwam = new QNetworkAccessManager;
       QNetworkRequest request(QUrl("http://www.localhost/index.php"));
       QByteArray data;
       QUrlQuery params;
       params.addQueryItem("user", username );
       params.addQueryItem("aufgabe", aufgabe );
      
       data.append(params.toString());
       data.remove(0,1);
       QNetworkReply *reply = nwam->post(request,data);
       QByteArray bytes = reply->readAll();
       QString str = QString::fromUtf8(bytes.data(), bytes.size());
       int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
       qDebug() << QVariant(statusCode).toString();
       }
Das ist mein momentaner Code, welcher soweit ich weiß eigentlich den HttpStatusCode ausgeben sollte. Leider ist Response entweder immer 0 oder komplett leer.


Wäre echt spitze falls mir jemand auf die Sprünge helfen könnte. Ebenfalls solltet ihr wissen dass ich nicht sonderlich viel Plan habe was genau ich mache, aber sonst würd ich ja auch nicht fragen -.-

LG
 
20 Jan 2017
50
19
#2
Könnte dir nur raten mal ein paar breakpoints zu setzen und schauen ob iwo schon was richtiges ankommt, hab selber noch nicht mit qt gearbeitet aber sollte dir schonmal ne idee geben was nicht funktioniert
 
Likes: xenos

Kraisie

Active Member
1 Apr 2017
127
186
#3
Zuerst: Ich kenne mich weder mit C++ noch mit QT oder PHP aus. Allerdings sagt die QT Doku:
Returns the attribute associated with the code code. If the attribute has not been set, it returns an invalid QVariant (type QMetaType::UnknownType).
(In Anbetracht der Zeile "int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();")
In der Doku zu QMetaType::UnknownType steht zudem, dass die Value davon 0 ist (deine Ausgabe). Ich vermute mal, dass dein PHP/dein Webserver keine richtige Antwort gibt/das Attribut nicht setzt, weshalb ich per Debugger gucken würde ob deine QNetworkReply überhaupt korrekt ist.

Ich muss aber hierbei auch nochmal betonen, dass ich das selber nicht weiß (s. erste Zeile).
 
Likes: xenos

xenos

Linke Zecke
24 Apr 2014
2,475
4,016
#4
Kraisie Kraisie mein Server macht alles richtig :/
Suche aber im allgemeinen auch eher nach einer Lösung wie ich dann den PHP Output fetchen kann. Jetzt grad ist es ja nur der HTTP Response
 

rn_

wo ist mein admin rang seal
7 Jan 2011
5,450
9,373
#5
Und wo besteht jetzt das Problem den aktuellen Text aus den Kontrollern zu holen und anhand dieser deine URL zu erstellen?
 

xenos

Linke Zecke
24 Apr 2014
2,475
4,016
#6
Und wo besteht jetzt das Problem den aktuellen Text aus den Kontrollern zu holen und anhand dieser deine URL zu erstellen?
Das ist nicht das Problem, das funktioniert super!!

Hab mir jetzt Fiddler installiert und mal den Traffic angeschaut.

Wenn ich im Code "http://www.localhost" nutze, kriege Ich folgendes:
[Fiddler] DNS Lookup for "www.localhost" failed. System.Net.Sockets.SocketException Der angegebene Host ist unbekannt

Nutze ich nur "http://localhost" krieg ich gar nichts bei Fiddler. Dann geht garkein Request raus wie es aussieht, oder ich bin blöd. Daran liegt es also denke Ich mal
 

ShynoX

Advanced Member
13 Jan 2014
868
1,196
#7
Das ist nicht das Problem, das funktioniert super!!

Hab mir jetzt Fiddler installiert und mal den Traffic angeschaut.

Wenn ich im Code "http://www.localhost" nutze, kriege Ich folgendes:
[Fiddler] DNS Lookup for "www.localhost" failed. System.Net.Sockets.SocketException Der angegebene Host ist unbekannt

Nutze ich nur "http://localhost" krieg ich gar nichts bei Fiddler. Dann geht garkein Request raus wie es aussieht, oder ich bin blöd. Daran liegt es also denke Ich mal
www.localhost ist auch nicht standardmäßig definiert. WWW ist kein allgemeingültiges Prefix, es ist eine stinknormale Subdomain, die einfach manuell definiert wird.
Also entweder used du nur localhost, noch besser direkt 127.0.0.1 oder definierst in der C:/Windows/System32/drivers/etc einen Hostname www.localhost
 

xenos

Linke Zecke
24 Apr 2014
2,475
4,016
#8
www.localhost ist auch nicht standardmäßig definiert. WWW ist kein allgemeingültiges Prefix, es ist eine stinknormale Subdomain, die einfach manuell definiert wird.
Also entweder used du nur localhost, noch besser direkt 127.0.0.1 oder definierst in der C:/Windows/System32/drivers/etc einen Hostname www.localhost
HEY ich habs mit 127.0.0.1 geschafft, lasse jetzt auch direkt den Output der Seite ausgeben. Einziges Problem nun:

Your browser (or proxy) sent a request that this server could not understand.

Ich weiß jedoch echt nicht wo dabei der Fehler liegt, da alles funktioniert wenn ich es manuell über den Browser mache :/
 
Status
Not open for further replies.