使用Qt设置http get请求参数 [英] Setting http get request parameters using Qt
问题描述
我正在开发一个基本的应用程序在Qt使用REST API从Parse.com检索数据。我经历了一些类引用和cURL手册,但它仍然不清楚如何设置请求参数。例如,我想要验证用户。下面是Parse提供的curl示例:
curl -X GET \
-HX-Parse- -Id:myappid\
-HX-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);
当没有参数的时候工作得很好,但是我应该使用什么来实现和curl一样
使用--data-urlencode切换?
<不幸的是,QUrl :: addQueryItem()在qt5中被弃用,但是从那里开始我发现了QUrlQuery类,它有一个addQueryItem()方法,并且可以产生一个查询字符串,它是QUrl的setQuery()方法可以接受的,所以它现在看起来像这样和工作正常:
QUrl url(https://api.parse.com/1/login);
QUrlQuery查询;
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);
感谢Chris的提示。
I'm developing a basic application in Qt that retrieves data from Parse.com using the REST API. I went through some class references and the cURL manual but it's still not clear how you set the request parameters. For example, I'd like to authenticate a user. Here's the curl example provided by 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
I set the url and the headers like this
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);
which worked fine when there were no parameters, but what should I use to achieve the same as curl does with the --data-urlencode switch?
Thanks for your time
Unfortunately, QUrl::addQueryItem() is deprecated in qt5 but starting from there I found the QUrlQuery class which has an addQueryItem() method and can produce a query string that is acceptable for QUrl's setQuery() method so it now looks like this and works fine:
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);
Thanks for the tip Chris.
这篇关于使用Qt设置http get请求参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!