使用Qt设置http get请求参数

时间:2013-03-25 15:51:15

标签: qt rest curl parse-platform

我正在Qt中开发一个基本应用程序,它使用REST API从Parse.com检索数据。我浏览了一些类引用和cURL手册,但是仍然不清楚如何设置请求参数。例如,我想验证用户身份。这是Parse提供的卷曲示例:

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

我设置了网址和标题

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);

在没有参数时工作正常,但是我应该使用什么来实现与curl相同的--data-urlencode开关?

感谢您的时间

3 个答案:

答案 0 :(得分:8)

不幸的是,在qt5中不推荐使用QUrl :: addQueryItem()但是从那里开始我发现了QUrlQuery类,它有一个addQueryItem()方法,并且可以生成一个QUrl的setQuery()方法可接受的查询字符串,所以它现在看起来像这样,工作正常:

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);

感谢小费克里斯。

答案 1 :(得分:4)

我相信QUrl::addQueryItem()正是您所寻找的

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

答案 2 :(得分:2)

尝试使用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);