6

私はQtで、RESTAPIを使用してParse.comからデータを取得する基本的なアプリケーションを開発しています。いくつかのクラスリファレンスとcURLマニュアルを確認しましたが、リクエストパラメータをどのように設定するかはまだ明確ではありません。たとえば、ユーザーを認証したいと思います。Parseが提供するcurlの例は次のとおりです。

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

これはパラメーターがない場合は正常に機能しましたが、curlが--data-urlencodeスイッチで行うのと同じことを実現するには何を使用する必要がありますか?

御時間ありがとうございます

4

3 に答える 3

13

残念ながら、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);

先端クリスをありがとう。

于 2013-03-25T17:10:52.750 に答える
5

QUrl::addQueryItem()はあなたが探しているものだと信じています

QUrl url("https://api.parse.com/1/login");
url.addQueryItem("username", "test");
url.addQueryItem("password", "test");
...
于 2013-03-25T16:25:37.580 に答える
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);
于 2013-05-23T09:57:41.897 に答える