問題タブ [asynchttpclient]

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.

0 投票する
1 に答える
1248 参照

c# - 単純な API クライアントでは非同期タスクが終了しません。デッドロック?

私はC#が初めてで、await、async、およびTasksの適切な使用法を誤解している可能性が非常に高いです:)

OWConnectorアプリの API クライアントとして機能するクラス ( ) を開発したいと考えています。この目的のためにPostRequest、POST 要求を実行する汎用メソッドを開発しています。

残念ながら、認証メソッド(ジェネリックメソッドを使用PostRequest)を使用すると、アプリがデッドロックに陥っているように見えます。

問題がどこにあるかを理解するのを手伝ってもらえますか? デバッガーが永遠に待機するコードにマークを付けました。

フォーム方式

OWConnector クラス

0 投票する
1 に答える
2552 参照

apache - HTTP Async クライアントで応答が得られない

HTTP リクエストが送信されない、またはリクエストに対する HTTP レスポンスが散発的に得られないという奇妙な状況に陥っています。私のアプリケーションは、定期的に他のサードパーティ サービスに対して数回 (100 秒) の http 要求を行いますが、そのほとんどはまったく問題なく動作します。カスタム HttpRequestIntercerptor および HttpResponseInterceptor で CloseableHttpAsyncClient (バージョン 4.0) を使用します。これらは主にデバッグ目的で追加されたもので、RequestInterceptor はチェーンの最後のインターセプターであり、ResponseInterceptor は最初のインターセプターです。アイデアは、実際のリクエストを送信する前の最後の段階で各 http リクエストをログに記録し、最初に受信したときに各 http レスポンスをログに記録することでした。

非同期クライアントをセットアップするには、次のパターンがあります。

リクエストを行うには、次のようにします。


これが私の AsyncHTTPResponseHandler クラスです:

このセットアップに基づいて、インターセプター ログに基づいて次のケースを確認します。2. アプリケーションの http リクエストが asyncclient HttpRequest をトリガーし (インターセプターがログに記録)、このリクエストの HttpResponse を取得できません --- 理由がわかりませんか? 3. アプリケーションの http 要求が asyncclient HttpRequest をトリガーせず (インターセプターはそれをログに記録しません)、この要求の HttpResponse を取得しません --- 理由がわかりませんか?

これを修正したり、この問題をさらにデバッグしたりできることに関するヒントや提案はありますか?

ありがとう!!

0 投票する
2 に答える
18947 参照

c# - C#を使用してHttpClientでJSONを投稿するには?

HttpClient で JSON を POST する方法がわかりません。this のような解決策を見つけましたが、非同期の原因である HttpClient を使用する必要があり、ヘッダーを追加する必要があります。

これは以下の私のコードです。それを修正する方法はありますか?

0 投票する
0 に答える
210 参照

apache-camel - 複数の camel ルートと Camel AHC コンポーネントの問題

同じキャメル ルート内に複数のコール ツー エンド ポイントが設定されています。キャメルahcコンポーネントを使用しています。これは、通常のシナリオでは正常に機能します。パフォーマンス テスト中に問題が発生しています。

問題は、これら 2 つの呼び出しが混在していることです。これを回避する方法を教えてください。READ の呼び出しが完了した後、後処理でヘッダー Method の値は FEED になります。これら 2 つの呼び出しが混在しているようです。これを修正する方法を教えてください。

ありがとう、ラケッシュ

0 投票する
1 に答える
1099 参照

asynchttpclient - すべてのリクエストが完了するのを待つ方法

AsyncHttpClientコマンドラインプログラムからning を使用しています。クライアントを安全に呼び出せるように、すべてのリクエストが終了するのを待つ必要がありclose()ます。課題は、プログラムのさまざまな部分から多くのリクエストを行うことです。onCompleted別のリクエストからネストされた HTTP リクエストを実行する 1 つのシナリオを示す以下の独自のコードを取り除きました。

これはコード例です。実際のコードはより複雑で、さらに多くの HTTP 呼び出しがあります。close()クライアントを呼び出す前に、すべての通話が終了していることを確認するにはどうすればよいですか?

0 投票する
0 に答える
614 参照

java - asyncHttpClient.get() を使用した不完全な JSON 応答

asyncHttpClient.get()応答が大量のデータを返す必要があるシナリオで使用していますが、応答は不完全です (そして解析できません)。

参考リンク:asyncHttpResponseHandler.onSuccess

これが私のコードです:

応答が不完全なのはなぜですか?

0 投票する
0 に答える
1474 参照

tomcat - AsyncContext、タイムアウト、および再試行

プロキシの AsyncContext や ning AsyncHttpClient など、多くのコンポーネントを備えたクライアント/サーバー Web アプリがあり、タイムアウトと再試行 (および startAsync/complete) がどのように機能するかを理解しようとしています。これが完全な構造です(簡略化)...

アクション (ボタンのクリックなど) に応答して、アプリケーション サーバー上のサーブレットを呼び出す GWT 2.7 アプリ。このサーブレットは、プロキシ サーブレットを経由して別のホストに移動し、長時間実行されるタスクを実行します。開発では、組み込みの jetty サーバーを使用して GWT アプリを実行/デバッグします。本番環境では、war を tomcat7 にデプロイします。

最初のサーブレットは、RestEasy 3.0.8 (および ApacheHttpClient4Executor) を使用して、プロキシ サーブレットを通過する呼び出しを作成します。ここでは、ning AsyncHttpClient 1.7.5、startAsync/complete、および AsyncHandler を使用して、リモート ホスト (RestEasy も使用) 上のサーバーを呼び出しています。これは、現在私が相談できない他の誰かによって設定されました。

complete() をいつ呼び出すか、または再試行を停止/有効にする方法がわかりません。大きな問題の 2 つは、(コンテキスト タイムアウトのプロキシ内で、または [AsyncResponse] がタイムアウトしたリモート サーバーへの呼び出しのいずれかで) タイムアウトの前後で complete() すると、IllegalStateException の (IDLE,initial) が頻繁に発生することです。そして... Jettyは、コンテキストタイムアウトが発生したときに(プロキシで)リクエストを完全に再起動するように見えます.入力ストリームを使用すると、2 回目/再試行では同じ入力ストリームが使用され、その結果、リモート サーバーは 2 回目の呼び出しで EOF 例外をスローします (読み取るバイトが残っていないため)。一方、受信した最初の呼び出しは引き続き処理されます。

私が試したこと/学んだこと...

  • RestEasy/ApacheHttpClient4Executor 呼び出しは決してタイムアウトしないようです (したがって、再試行の設定は重要ではありません) - 呼び出しの反対側で何が起こるかに基づいて、成功または失敗します (そして一見永久に待機します)...例...

    HttpParams パラメータ = client.getParams(); HttpConnectionParams.setConnectionTimeout(params, 5000); HttpConnectionParams.setSoTimeout(params, 5000);

    ((AbstractHttpClient) クライアント).setHttpRequestRetryHandler(新しい DefaultHttpRequestRetryHandler(3, true));

  • AsyncHttpClientConfig の setConnectionTimeoutInMs() はまったく何もしないようです (サーバー接続を確立するのにかかる時間だけでない限り - 完全な要求時間が含まれていると思いました)

  • タイムアウトで startAsync を実行してリクエストを実行すると、リクエストが完了する前にタイムアウトした場合、コンテキスト リスナーは onTimeout イベントを取得し、Jetty はリクエスト全体を再起動します (リスナーも onStartAsync イベントを取得します)。同じ文脈)。Tomcat はこれを行いません。別の人が同じことに遭遇したようですが、返信はありませんでした...

http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg02269.html

  • onTimeout で complete() を呼び出すと、2 番目のリクエストが停止します。代わりに onStartAsync で complete() を呼び出すと、奇妙な結果が得られます (2 番目の呼び出しはまだ発生し、AsyncHandler の onComplete はある時点で呼び出されますが、onThrowable が呼び出される [??] という結果になる IllegalStateException がスローされます)。

  • この構成で AsyncHttpClient に再試行を設定しても、何もしないようです (asyncTimeout、requestTimeout などの組み合わせでのみ発生する場合を除きます。まだ把握していません)。

  • 応答ステータスを (たとえば 408 に) 設定すると、まれに機能するように見えますが、多くの場合、サーバーで EOF 例外が発生して 500 が生成され、私がそれについて多くのことを行うことができずにクライアントに返されるため、機能しません (最初の呼び出しはまだ進行中です。これが 2 回目の呼び出しであること (失敗したこと以外) や、タイムアウトが原因で発生したことなどはわかりません)

  • AsyncContext のメソッドから収集できる情報はほとんどありません。リフレクションを使用して、使用できるデータを取得できますが、それがなければ...再試行されたかどうかをどのように知ることができますか? complete() を呼び出すかどうかを判断するために、どのような状態かを知るにはどうすればよいですか? などなど

  • AsyncContext (et al) オンラインに関する良い情報はほとんどないようで、javadoc が混乱しており、SO に関する小さな/孤立した修正の提案しかありません。これまでに出会った中で最高のものはこれです:

http://www.softwareengineeringsolutions.com/blogs/2010/08/13/asynchronous-servlets-in-servlet-spec-3-0/

結論: AsynContext/AsyncHandler がどのように機能するか、および/またはそれを適切に使用する方法、および/またはここで見ているものを理解するのに役立つ方法について、誰かが説明したり、良いドキュメントを教えてくれたりできますか? ありがとうございました!