問題タブ [java-http-client]
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.
basic-authentication - Java 11 HTTP クライアントを使用してプリエンプティブ認証を行うには?
基本認証を使用して、認証済みサービスに対して Java 11 HTTP クライアントを使用しようとしています。認証は正常に行われますが、認証データを送信する必要があることを理解するために、サーバーへの追加のラウンドトリップが行われます。
ドキュメントとコードを検索しましたが、ある時点で内部的に何らかのキャッシュを使用していますが、キャッシュ値を設定できません。
ここに私のクライアントコードがあります:
私が期待していたのは、サーバーが要求したときだけでなく、認証データをプリエンプティブに送信するようにクライアントに伝えることができるということでした。
java - java.net.http (Java 11) リクエスト BodyPublisher をテストするには?
新しい Java 11 を使用するコードをテストしようとしていますjava.net.http.HttpClient
。
私のプロダクションコードには、次のようなものがあります。
そして、私のテストでは、 をモックしてHttpClient
を取得しjava.net.http.HttpRequest
ます。リクエストボディ (= my ) を取得/テストするにはどうすればよい"example"
ですか? 電話request.bodyPublisher()
して を取得できますHttpRequest.BodyPublisher
が、行き詰まります。
- キャストしようとしましたが
jdk.internal.net.http.RequestPublishers.ByteArrayPublisher
(実際にはそうです)、対応するパッケージがモジュールによってエクスポートされていないため、コンパイルされません。 HttpRequest.BodyPublisher
-interface (.contentLength()
, )で使用可能なメソッドを確認しましたが、.subscribe(subscriber)
それらでは不可能だと思います。- 新しいものを作成し
BodyPublisher
て を使用して比較しようとしまし.equals()
たが、実際の実装がないため、比較は常に false でした。
java - openJdk 11 java.net.http.HttpClient ロギングを無効にするには?
私はopenJDK 11のhttpclientを使用していますが、これには迷惑な繰り返しログが付属しています。
これがどのように見えるかです(私はスプリングブートベースのアプリを使用しています):
次のエントリをlogback-spring.xmlに追加して無効にしようとしましたが、役に立ちませんでした:
ご協力いただきありがとうございます
java - Java 11 HttpClient は React 開発サーバーを呼び出せません
Java 11 の newはの React 開発サーバー ( 経由で起動)HttpClient
では動作しません。クライアントは、エラーなしで無期限にハングします。create-react-app
npm start
他の URLhttps://google.com
や他のローカル サーバーで動作します。
- Node.js サーバー。たとえば、
http-server
(npm install http-server -g) - Python サーバー (
python3 -m http.server 3000
)
React開発サーバーでこれが起こる理由は何ですか?
状態を再現するには:
- 経由で反応アプリを作成します
npx create-react-app my-app
(必要なのはNode.jsだけでnpx
、その一部です) - それを実行し
cd my-app
ますnpm start
。開発サーバーは次の場所で起動しますhttp://localhost:3000/
- 次に Java コンソールを開きます。
jshell
jShell
React 開発サーバーが動作している間に、次のコードを開き、コピーして貼り付けます。
その後、無期限にハングアップします。
-Djdk.internal.httpclient.debug=true
パラメーターを使用してログを表示するために Java アプリからこれを試すと、ログは次のようになります。