問題タブ [qnetworkreply]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QNetworkAccessManager の複数の POST リクエストを回避するには?
次のようなアプリケーションのポスト リクエストを実装しました。
およびシグナル/スロットの初期化
サーバーでは、不正な HTML を作成するエラーがありますが、アクション自体は正しく実行されます (1 回呼び出された場合)。POST 応答の不適切な HTML が原因で、QNetworkAccessManager は POST 要求を数回再試行します (通常、Wireshark では 3 回または 4 回確認できます)。Qt では、Wireshark の最後の POST の直後に、replyFinished に一度だけ到達します。NetworkReply に「接続が閉じられました」というエラーが含まれています。
ここでの問題は、投稿されたアクションが数回続けて実行されると、サーバーで悪いことをすることです。サーバー側にアクセスできないため、クライアント側で POST メソッドを一度だけ呼び出すソリューションを探しています。単一の POST 試行のみを許可する QNetworkAccessManager で設定できるパラメーターはありますか? または、代わりに使用できる Qt の代替手段はありますか?
c++ - 1 つの QNetworkAccessManager から応答をディスパッチする方法は?
Qt のドキュメントではQNetworkAccessManager
、アプリケーションごとに1 つ使用されると記載されています。
Qt アプリケーション全体に対して、1 つの QNetworkAccessManager で十分です。
ただし、複数の Web サービスにアクセスし、それぞれを解析するために個別の関数を呼び出す必要があります。
シグナルが1 つ しかないのでQNetworkAccessManager::finished(QNetworkReply * reply)
、応答を個々の解析関数にディスパッチする最良の方法は何ですか?
リクエストを作成すると、各オブジェクトのfinished
シグナルに接続できます。QNetworkReply
しかし、一度しか使用されない信号 (パフォーマンス) に接続するための最良の方法はありますか? より良い方法はありますか?
関連する独自の質問:
qt - 接続が失われたときに QNetworkReply エラー信号が検出されない
Qt5.5 を使用してリモート サーバーからファイルをダウンロードしていますが、すべて正常に動作しますが、QNetworkReply がいつエラーを返すかを検出できません。実際、ユーザーがファイルをダウンロードしているときに、突然インターネット接続が失われたかどうかを確認しようとしています (なぜなら :-) )。そのために、ダウンロードを開始し、数秒後にイーサネット ケーブルを取り外します。
QNetworkReply::error(QNetworkReply::NetworkError)
この場合、信号は発信されますか? はいの場合、以下のコードで自分のスロットを入力していないのはなぜですか?
また、次のようにアクセスマネージャーを接続しました:
インターネット接続が中断されていない場合、私はスロット requestFinished() に入りますが、インターネットがもうない場合は、どのスロットにも入りません。
私は何か間違ったことをしていますか?
c++ - QNetworkAccessManager のメモリの問題
QtNetworkAccessManager を使用してサーバーに要求を送信し、応答を保存するアプリケーションを開発しています。私はそれを機能させましたが、メモリ使用量が継続的に増加し、PC全体がブロックされます。問題は deletelater() の呼び出しとイベント ループに関連していると思いますが、修正方法がわかりません。コードは次のとおりです。
main.cpp
イーサネット.h
イーサネット.cpp
提案をいただければ幸いです。ありがとうございました!
c++ - QNetworkAccessManager が機能しない
次のコードがあります。
Googleサーバーにクエリを送信して応答を取得したいのですが、リクエストを送信しても上記のスロットのどれも呼び出されないので、何が間違っていますか? そのアドレスをブラウザに入力すると、データが取得されます。
c++ - QNAM が Qt で Web ページのダウンロードを開始したという信号を受信するにはどうすればよいですか?
クローラーに Qt 5.7、C++ を使用しています。
NetworkTimeouts
クラス、実装の詳細 (cpp)に基づいてタイムアウト管理を作成しました。
QNetworkAccessManager
(QNAM) が URL に内部キューを使用していることは知っています。URL を非表示のキューに入れるだけでなく、実際のダウンロードの開始を検出するにはどうすればよいですか? ループで呼び出しQNetworkAccessManager::get()
ます (別の URL をプッシュするために、replyFinished() シグナルを待ちません)。実際のダウンロードの瞬間にタイマーを開始する必要があります。Windows では、最大 6 つの並列要求があり、他は待機しています。