問題タブ [apache-httpasyncclient]
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.
java - Apache HTTP/2 クライアント 5.0 POST リクエストにペイロード/コンテンツがありません
受信したパラメーターをエコー バックする Tomcat にデプロイされた小さなサンプル サーブレットがあります。Tomcat は、HTTP/1.1 および HTTP/2 をサポートするように構成されています。curl
HTTP/1.1 と HTTP/2 の両方で動作することを示すサーブレットへの GET 要求を作成するために使用できます。
Apache HTTP 5.0 クライアントを使用して、サーブレットをヒットする単体テストとPOST
、正常に機能するいくつかのパラメーター (要求コンテンツ) を含む要求があります。サーバーはパラメーターを受け取り、それらを読み取ることができるクライアントに返します。このテストでは、呼び出しを使用して HTTP/1.1 または HTTP/2 を使用するようにクライアントをCloseableHttpAsyncClient.setVersionPolicy()
呼び出します。ただし、HTTP/2 を使用するように変更すると、クライアントは要求コンテンツをサーバーに送信しません。
setVersionPolicy(HttpVersionPolicy.FORCE_HTTP_1)
以下は、成功した HTTP/1.1 呼び出しのサンプル コードです。. それを変更するとFORCE_HTTP_2
、呼び出しは HTTP/2.0 経由で行われますが、リクエストの内容は送信されません。
誰かが私が間違っていることや、何をする必要があるかを提案できますか? 新しい Apache 5.0 クライアント ライブラリの使用に関する多くのドキュメントは見つかりませんでした。サンプルには、送信および POST コンテンツ (または少なくとも私が見つけたもの) が示されていません。
java - Apache クライアント 5.0 の「接続が閉じられています」HTTPS POST エラーのトラブルシューティング方法
ポート 8002 で HTTP1.1 および HTTP/2 用に構成された Tomcat サーバーと、ポート 8003 でテストできるように HTTPS 用に構成された Tomcat サーバーがあります。Apache HTTP クライアント 5.0 を使用して HTTP/2 をサーバーと通信する Java コードを作成していますが、問題があります。最終的に、HTTP/2 を使用してコンテンツを含むメッセージをサーバーに POST できるようにしたいのですが、問題があるため、Apache に付属の例の 1 つであるH2TlsAlpnRequestExecutionExampleに基づいてコードを単純な例に落とし込みました。
与えられた例は、GET リクエストを使用してhttps://nghttp2.orgにアクセスしています。これを機能させることができます。POST 要求への変更も機能します。HTTP 405 (メソッドは許可されていません) 応答が返されますが、呼び出しが行われました。まったく同じ例をサーバーに向けると、HTTP/2 を使用して通常の HTTP/1.1 ポート (8002) に正常に GET および POST できます。ただし、HTTPv1.1 (HTTP/2 ではなく) を使用した GET/POST は HTTPS/8003 でも機能しますが、ポート 8003 で HTTPS に GET または POST しようとすると失敗します。
DEBUG をオンにすると、Apache ライブラリからのデバッグ情報はあまり表示されませんが、両方のケースで私の証明書が信頼されていることを示すログ メッセージが表示されるので、明らかに最初の呼び出しネゴシエーションが行われます。
これは、nghttp2.org への HTTP2 呼び出しのログです (ログの行から HTTP/2 を使用していることがわかります)。
これは、サーバーをポイントしたときのログです。証明書を信頼していると表示されているため、接続してネゴシエーションを行ったに違いありませんが、その後は何も起こりません。
これがコードです。
問題をデバッグまたは解決する方法を誰かが知っていますか? Tomcat サーバーのセットアップは問題ないと思います。それを確認するために使用できるツールまたはツールはありますか? 接続が閉じられた理由と、接続が閉じられた原因を調べるために、デバッグ/ログ情報をさらに見ることはできますか?
java - parse using Apache HttpClient + JSOUP getting empty value JAVA
Trying to capture information about products and all inner elements giving me the empty value. I changed my request to Async and i still have html-page with no loaded information. Html is incomplete. How to solve that problem?
java - 実行時に CloseableHttpAsyncClient に SSLContext を追加する
さまざまな POST エンドポイントにメッセージを配信する汎用アプリケーションがあります。そして、この目的のために CloseableHttpAsyncClient を使用しています。次のように構築/初期化されています。
これは事前に構築され、初期化されています。新しいリクエストがアプリケーションに到着すると、メッセージ、認証タイプに基づいて、新しい postRequest が構築されますhttpPost = new HttpPost(builder.build());
必要なヘッダー、ペイロードなどを設定した後、httpClient を終了してリクエストを送信します。
httpClient.execute(httpPost, httpContext, null);
ここでの質問は、クライアント証明書ベースの認証をサポートするという新しい要件に基づいています。そして、現在のアプローチは最初に httpClient を作成することであるため、問題は、クライアント証明書を一部のエンドポイントに送信し、証明書の送信を必要としない他のエンドポイントと同じように動作するように httpClient の動作を変更する方法です。
作成中に SSLContext を CloseableHttpAsyncClient に導入できることはわかっていますが、作成時には、証明書ベースの認証を必要とするエンドポイントがあるという情報はありません。また、クライアント証明書をサポートし、実行時に認識される多くのエンドポイントを持つことができます。