問題タブ [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 - 単純な URL を取得するときの QNetworkReply エラー「接続が閉じられました」
シンプルなファイルダウンローダーを作ろうとしています。URL をダウンロードするためのコード セグメントは次のとおりです。「 http://stackoverflow.com 」のような単純な URL を取得しようとすると、このコードは正常に機能します。しかし、リダイレクト
する URL を指定すると、 「接続が閉じられました」というエラーがスローされます。
さらに、ネットワーク エラーを認識するために、次の信号スロットを接続しました。
以下は、networkReply のエラー シグナルが発せられた場合にエラーを出力するスロットです。
このエラーのため、networkReplyオブジェクトはヘッダーをまったく受け取りません。
私の必要性は、このメソッドで HTTP ステータス コードを読み取ることです。QNetworkReply::attribute(QNetworkRequest::HttpStatusCodeAttribute)
ヘッダーが取得できないため、HTTP ステータス コードを読み取ることができません。
誰が何が起こっていると言うことができますか?
前もって感謝します!:)
c++ - Web サイトからファイルをダウンロードする
私の小さなプログラムについて助けを求めています。QNetwork クラスを使用して Web サイトからセットアップ (.exe) をダウンロードしたいと考えています。私はすでにそれについて多くの記事を検索して読んでいますが、うまくいきません。
ダウンロード.cpp:
ダウンロード.h:
OpenSSL 用の dll を追加しましたが、動作します。「.pro」ファイルに「network」も追加しました。しかし、プログラムを実行して別のクラスのプッシュ ボタンをクリックすると、initialiseDownload() は機能していますが、シグナルが非アクティブのようです。
前もって感謝します !
c++ - QNetworkReply からダウンロードされたパーセンテージを取得する
以下を使用して、ファイルがダウンロードされているときに、QNetworkReply からダウンロードされたパーセンテージを取得しようとしています。
しかし、プログラムをテストすると、常に次のようになります。
進行状況: 100
これは2回出力され、100を下回ることはありません。ダウンロードの進行状況が変化するたびに信号を発信したいと思います。
どうすればこれを実現できますか? または、それが起こらないようにコードを間違えたのでしょうか?
編集: @dubsjw は、int を使用して丸めエラーが発生したことを指摘しました。大きな画像では時間の経過とともに 0 から 100 に増加しますが、小さな画像では、進行状況: 0 と進行状況: 100 しか得られず、その間には何もありません。0 から 100 までスムーズに増加するプログレス バーによって受信される信号を送信したいと思います。これを行うにはどうすればよいですか?
ファイルダウンローダー.h:
ファイルダウンローダー.cpp:
c++ - 同じURLを再度リクエストすると、Qt QNetworkReply readAllが空を返します
これは純粋なテスト目的であり、私の好奇心のためです。DataDownloader クラスを使用して、サーバーからデータのリストを取得します。http://tiny-file-url、http://big-file-urlなど、さまざまな URL で動作します。しかし、http://tiny-file-url と http://tiny-file-url という 2 つの同一の URL を渡し、http: //tiny-file-urlからのデータが非常に小さい場合、2 番目の応答はfrom QNetworkAccessManager は空です。ただし、2 つのhttp://big-file-urlは機能しているようです。同じ URL から小さなデータを要求するときに、QNetworkAccessManager が何らかの魔法をかけるかどうか疑問に思っていますか? Qtドキュメントサイトで関連情報を取得できないようです。
これが私のDataDownloader
クラスです:
これを呼び出すコードDataDownloader
は次のとおりです。
qt - QNetworkAccessManager のシグナル終了のためにスロットが呼び出されませんでした
サーバーに投稿リクエストを送信したいのですが、次のようにします。
しかし、スロットserviceRequestFinished()
はまったく呼び出されません! Wireshark を使用してリクエスト/レスポンスを追跡したところ、リクエスト (投稿) が送信され、サーバーがステータス200
(ok) を含むレスポンスを返すことがわかりました。また、ret
変数は を返しますtrue
。つまり、信号とスロットの間の接続が正常に行われました。これがうまくいかない理由を知っている人はいますか?ありがとうございました!:)
編集
問題を引き起こすコード - 私の答えを見てください - はこれです:
qt - コードが 200 でない場合、QNetworkReply から本文を読み取るにはどうすればよいですか
の場合、返信は空の本文コンテンツを返しますreply->error() != QNetworkReply::NoError
が、実際には応答にコンテンツがあります。
どうすれば読めますか?
qt - QNetworkReply からカスタム QNetworkRequest オブジェクトを取得する
これが私が持っているコードです:
UserInfoRequest が別のクラスから派生する場所:
質問は、クラスQNetworkRequest
に返されたオブジェクトを何らかの方法でキャストできますか? それが不可能な場合、前にリストしたコードからカスタム リクエスト オブジェクトを応答ハンドラ スロットに渡す最良の方法は何ですか。QNetworkReply::request()
APIRequest