Qt QUrlQuery param split

Qt QUrlQuery param split

本文关键字:split param QUrlQuery Qt      更新时间:2023-10-16

我使用Qt v5.5。我需要 http 收到这样的请求

QUrlQuery urlQuery;
urlQuery.setQuery("https://lalala.com/login");
urlQuery.addQueryItem("submit", "");
urlQuery.addQueryItem("email", "email@email.com");
urlQuery.addQueryItem("pass", "unbelievable_password");

当我调用 urlQuery.query() 时,网址是

"https://lalala.com/login&submit=&email=email@email.com&pass=unbelievable_password"
参数"

提交"是第一个参数,它需要使用"?"拆分参数名称,但参数由"&"拆分。

你想把URL放到一个QUrl,然后添加查询项——而不是把URL本身作为查询项!

QUrl url("https://www.foo.com");
QUrlQuery query;
query.addQueryItem("email", "foo@bar.com");
query.addQueryItem("pass", "secret");
url.setQuery(query);
qDebug() << url;

正确打印

QUrl("https://www.foo.com?email=foo@bar.com&pass=secret")

看起来这里已经有关于 SO 的讨论了。 一般来说,看起来任何"子delims"都应该被接受,有或没有值:https://www.rfc-editor.org/rfc/rfc3986#appendix-A

事实是,QUrlQuery没有没有尾随等号的无值查询选项,这太糟糕了。