リクエストを行う次のコードがあります。
void HTTPClient::post(QString connectionString, QHttpMultiPart* _multiPart, bool returnProgress) {
QUrl url;
if (ssl)
url.setScheme("https");
else
url.setScheme("http");
url.setHost(host);
url.setPort(port);
url.setPath(connectionString);
url.setUrl(url.toEncoded());
QNetworkRequest request(url);
request.setRawHeader("User-Agent", QCoreApplication::applicationName().toLatin1());
/*...irrelevant code...*/
}
要求された URL は
https://somewebpage.domain:443/REST/login.php?method=login_md5
しかし、URLをエンコード済みとして設定したにもかかわらず、QNetworkRequestはこれを要求します(url.toEncoded()のデバッグは「?」を正しく出力します):
https://somewebpage.domain:443/REST/login.php%3Fmethod=login_md5
これにより、404 not found ページが表示されます。url.toString() と url だけで URL を設定しようとしましたが、「?」混乱し続けます。リンクを適切にリクエストするにはどうすればよいですか?
次のように、コンストラクターで QUrl を構築しようとしました。
QUrl url("https://"+ホスト+ポート+接続文字列);
しかし、結果は次の文字列になります。
https://somewebpage.xn--domain-efa/REST/login.php?method=login_md5