質問

私は初めてです Qt. 。Qt for VS2008 をインストールし、 VS2010. 。HTTP リクエストの作成方法を知りたいだけです。について読みました Qtネットワーク しかし、QtHttp は廃止されました。

私も知っています リブカール そして カールップ, 、しかし、それをインストールしてQtで動作させるのに問題があります。

おすすめは何ですか、 Qtネットワーク または カールップ?もし Qtネットワーク, 、サンプル関数またはコード(および使用するクラス)を教えてください。もし カールPP(libcurl), 、インストール手順が記載されている場所を教えてください。 Qt (または親切に説明してください)?

どうもありがとうございます。

役に立ちましたか?

解決

のlibcurlの curlpp は偉大なライブラリですが、それらを使用することは、おそらくあなたは避けることができ、あなたのプロジェクトに依存関係を追加します。

Qtの最近のバージョンは、(ネットワーク要求を行うために QNetworkAccessManager して使用することをお勧めしますHTTPリクエストを含む)との回答を受けています。

ファイルをダウンロードするための最も簡単な方法は、次のとおりです。

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
replyFinishedスロットが呼び出されると、

は、 QNetworkReply の目的は、それがかかることパラメータとしてのメタデータだけでなく、ダウンロードしたデータが含まれます(ヘッダ、など。)。

より完全な例では、Qtの例で見ることができ、あなたは読むことができますここでは、そのソースコードでます。

他のヒント

ジュゼッペは右である、あなたが使用する必要はありません。のlibcurlのの、がcurlpp のと同様のライブラリ。 そのための必要はありません、Qtは自分のことで、シンプルで労働者階級を持っています。

要求を送信し、応答を取得する標準的な方法が非同期であることに留意してください。 あなたは、常にスロットにマネージャ終了(QNetworkReply *)信号を接続する必要があります。

あなたが複数の要求を送信し、各応答のためのスロットを追加したくない場合は、

、あなたは常に()スロットをイベントループを実行し、イベントループに管理者が信号接続終了することができます。

このような何かます:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QEventLoop *eventLoop = new QEventLoop();
QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), eventLoop, SLOT(quit());

manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
eventLoop->exec(QEventLoop::ExcludeUserInputEvents);

QByteArray replyData = reply->readAll();
... //do what you want with the data your receive from reply

ところで。あなたは何をしているかわかりません。そのモバイルアプリなら、私はあなたがVSからQtCreator IDEへの切り替えをお勧めします。それは素敵なシミュレータとモバイルデバイスのテストのための完全なツールチェーンを持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top