设置使用Qt HTTP GET请求参数(Setting http get request param

2019-08-17 23:34发布

我正在开发Qt中,使用REST API从Parse.com检索数据的基本应用。 我通过一些类引用和卷曲手动去,但你如何设置的请求参数,它仍然不明确。 例如,我想验证用户。 这是一个被解析提供的卷曲例如:

curl -X GET \
-H "X-Parse-Application-Id: myappid" \
-H "X-Parse-REST-API-Key: myapikey" \
-G \
--data-urlencode 'username=test' \
--data-urlencode 'password=test' \
https://api.parse.com/1/login

我设置的URL像这样的标题

QUrl url("https://api.parse.com/1/login");
QNetworkRequest request(url);

request.setRawHeader("X-Parse-Application-Id", "myappid");
request.setRawHeader("X-Parse-REST-API-Key", "myapikey");

nam->get(request);

这工作得很好,当没有参数,但我应该怎么用,以实现相同的卷曲与--data-进行urlencode开关呢?

谢谢你的时间

Answer 1:

不幸的是,QUrl :: addQueryItem()被弃用QT5但是从那里开始,我发现它有一个addQueryItem()方法,并可以生成查询字符串,它是可以接受的QUrl的setQuery()方法,因此现在看起来这和QUrlQuery类工作良好:

QUrl url("https://api.parse.com/1/login");
QUrlQuery query;

query.addQueryItem("username", "test");
query.addQueryItem("password", "test");

url.setQuery(query.query());

QNetworkRequest request(url);

request.setRawHeader("X-Parse-Application-Id", "myappid");
request.setRawHeader("X-Parse-REST-API-Key", "myapikey");

nam->get(request);

谢谢你的提示克里斯。



Answer 2:

我相信QUrl::addQueryItem()是你在找什么

QUrl url("https://api.parse.com/1/login");
url.addQueryItem("username", "test");
url.addQueryItem("password", "test");
...


Answer 3:

尝试使用QtCUrl 。 这很容易,如果你熟悉卷曲。

QtCUrl cUrl;

QUrl url("https://api.parse.com/1/login");
url.addEncodedQueryItem("username", "test");
url.addEncodedQueryItem("password", "test");

QtCUrl::Options opt;
opt[CURLOPT_URL] = url;
QStringList headers;
headers
    << "X-Parse-Application-Id: myappid"
    << "X-Parse-REST-API-Key: myapikey"

opt[CURLOPT_HTTPHEADER] = headers;
QString result = cUrl.exec(opt);


文章来源: Setting http get request parameters using Qt