QUrl: warum ist das Ergebnis nicht "isValid"? [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

QUrl: warum ist das Ergebnis nicht "isValid"? [gelöst]

Beitrag von harry_m »

Ich stelle mir eine URL zusammen:

Code: Alles auswählen

    QUrl url(ftpServerLineEdit->text());
    url.setScheme("ftp");
    url.setUserName(userNameLineEdit->text());
    url.setPassword(passwordLineEdit->text());
    url.setPort(21);
Später wird abgefragt, ob URL "isValid": und die Antwort lautet "false".

Wenn ich mir die URL ausdrucken lasse kommt folgendes:

"ftp://UserName:Password@:21/ftp.server.com"
(Name, Password und Server sind selbstverständlich anonymisiert, aber in Wirklichkeit kommt schon das richtige heraus)
Es kommen nur ASCII-Zeichen zum Einsatz, keine Sonderzeichen, Umlaute o.Ä.

Laut Doku soll eine "valid"-URL jedoch so aussehen:

"ftp://UserName:Password@/ftp.server.com:21"

Was habe ich übersehen?
Zuletzt geändert von harry_m am 8. Januar 2013 18:10, insgesamt 1-mal geändert.
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
der.grisu
Beiträge: 4
Registriert: 27. Mai 2009 11:44
Wohnort: Grambach

Re: QUrl: warum ist das Ergebnis nicht "isValid"?

Beitrag von der.grisu »

Die Portangabe kommt hinter dem Server, also eben "ftp.server.com:21" und nicht ":21/ftp.server.com".
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QUrl: warum ist das Ergebnis nicht "isValid"?

Beitrag von harry_m »

Das ist richtig.

Nur liefert mir diese falsche Konfiguration das Objekt "url" zurück: sprich, ich schreibe die Daten mit den "set"-Methoden und wenn ich es dann aus dem Objekt "url" ausgebe, sieht es so wie abgebildet aus.

DAS ist mein Problem.
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: QUrl: warum ist das Ergebnis nicht "isValid"?

Beitrag von upsala »

QUrl erwartet im Konstruktor eine URL, du übergibtst aber irgendeinen String. Dieser wird scheinbar als Pfad interpretiert. Somit hast du einen leere Serverangabe, anschließend den Port und mit dem Slash abgetrennt deinen Pfad.

Verwende den folgenden Code:

Code: Alles auswählen

QUrl url;
url.setHost("server");
url.setScheme("ftp");
url.setUserName("user");
url.setPassword("password");
url.setPort(21);
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QUrl: warum ist das Ergebnis nicht "isValid"?

Beitrag von harry_m »

Danke. Das war's...

Der String, der mit "ftpServerLineEdit->text()" übergeben wurde nicht "irgendein String", sondern der Host...

Hatte an dieser Stelle keine Bedenken, denn von mir zitierte Code-Abschnitt stammt aus dem "QFtp"-Beispiel, das ich für meine Zwecke "missbraucht" habe (es musste unter Anderem um die Benutzernamen- und Passwort-Eingabe erweitert werden). War der Meinung, dass es an dieser Stelle schon passen würde: so kann man sich täuschen. Wieder was gelernt, wenn man die Lösung weiß, ist plötzlich alles plausibel...

Nochmals besten Dank.

Gruß
Harry
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
Antworten