問題タブ [httpurlconnection]

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 投票する
2 に答える
13143 参照

android - Android で HttpURLConnection が失敗する

(解決済み - 以下のコメントを参照)

マルチパート ファイルのアップロードを実装するクラスがあります。このコードは、私が試したすべての Java クライアント (Android を除く) で機能します。これは、私の Android アプリで、私のバックエンド サービスとうまく動作しない唯一の HTTP 要求コードです。

接続の responseCode が「-1」であるため、ここでかなり厄介なことが起こっています。Apache のアクセス ログやエラー ログにエントリが表示されず、リクエストが Android プラットフォームから送信されていないように見えます。コードは接続の書き込みを正しく処理しますが、接続の読み取りでハングし、タイムアウトしてから戻ります。動作は、実際の電話とエミュレーターで同じです。

Android でマルチパート ファイルを投稿するときに注意する必要がある落とし穴を知っている人はいますか?

私は以下のクラスを含めています(マイナーな衛生的な改造が行われました)ので、私が何をしているのかを見ることができます

0 投票する
3 に答える
18968 参照

java - java UrlConnectionを使用してntlm(またはkerberos)で認証する

ドメインユーザーアカウントのクレデンシャルを渡して、Javaで残りのWebサービスを利用する必要があります。

今、私は古典的なaspでそれをやっています

とasp.netで

Javaでこれをどのように達成できますか?現在ログインしているユーザーの資格情報を使用していないことを考慮して、ドメインアカウントを指定しています(パスワードを持っています)

従来のaspやasp.netと同じくらい簡単だと言ってください。

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

java - 使用頻度の高いマルチスレッド環境で送信UrlConnectionオブジェクトを最適にクリーンアップする方法は?

サーブレット(同時使用率がかなり高い)が発信URLConnectionを作成して、通常のサーバー側処理ロジックの一部としてデータRESTスタイルを取得するユースケースがあります。URLは潜在的に異なるため、サーブレットが呼び出されるたびに接続が作成されて使用されます(ただし、ドメインは常に同じです)。ポートと接続がアプリケーションサーバー上で必要な時間より長く開いたままにならないように、これが可能な限り最適に行われるようにしたいのですが、該当する場合は再利用されます。

Javadocは少し曖昧に見えます-URLConnectionについて:

「リクエスト後にURLConnectionのInputStreamまたはOutputStreamでclose()メソッドを呼び出すと、特定のプロトコル仕様で異なる動作が指定されていない限り、このインスタンスに関連付けられたネットワークリソースが解放される可能性があります。」

HttpURLConnectionの場合:

'各HttpURLConnectionインスタンスは単一のリクエストを行うために使用されますが、HTTPサーバーへの基盤となるネットワーク接続は他のインスタンスによって透過的に共有される場合があります。リクエスト後にHttpURLConnectionのInputStreamまたはOutputStreamでclose()メソッドを呼び出すと、このインスタンスに関連付けられているネットワークリソースが解放される場合がありますが、共有の永続的な接続には影響しません。その時点で持続的接続がアイドル状態である場合、disconnect()メソッドを呼び出すと、基になるソケットが閉じる可能性があります。

現在、URLConnectionが使用されており、以下のコードに従って入力ストリームのみが閉じられています(エラー処理とURL読み取りは、質問に関連しないため削除されました)。私の考えでは、これによりストリームリソースがクリーンアップされますが、可能であれば基盤となるソケットの再利用が可能になります(リクエストは常に同じドメインに送信され、URLパスが異なるため)。さらに最適化する方法についてのアドバイスをいただければ幸いです。

0 投票する
4 に答える
18747 参照

java - IOException: "Received authentication challenge is null" (Apache Harmony/Android)

HttpURLConnectionAndroid (からインポート)を介して GET を送信しようとしていますがorg.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection、応答を受信すると、IOExceptionがスローされます。

in doRequestInternal(): 「受信した認証チャレンジは null です」

このエラーの意味と原因は何ですか? Authorization ヘッダーに OAuth パラメーターを書き込んでいますが、別の機会にもこれを行っていますが、問題はありません。

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

java - サーバーから送信された 100 コンティニューの数をカウントするにはどうすればよいですか?

私は Apache Commons HttpClient 3.1 を使用していますが、Sun の HttpURLConnection がストリームから 100 Continues をドロップすることがわかりました。

そのため、100 Continue は明らかに Sun のコードによって削除されているため、取得できないようです。

HttpClient 4.0 に進むことはできません。既存のコードに多くの変更を加える必要があるため、解決策は 3.1 または競合しないものでなければなりません。

何か案は?

ありがとう

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

java - HttpsURLConnection.getOutputStream()は接続タイムアウト時に再試行しますか?

HttpURLConnectionで問題が発生していました。getOutputStream()には2〜3秒かかりました。HttpURLConnection.setConnectTimeoutを使用して接続タイムアウトを設定し、getOutputStream()からSocketTimeoutException(IOExceptionでラップ)がスローされることを期待しているため、別のサーバーで操作全体を再試行できます。

代わりに、今は機能します。getOutputStream()は、SocketTimeoutExceptionを受け取った場合、内部的に接続しようとしますか?

0 投票する
5 に答える
50101 参照

java - HttpURLConnection.getResponseCode()は、2回目の呼び出しで-1を返します

使用しているライブラリ(標識1.1-SNAPSHOT)がリモートサーバーに2回連続して接続すると、Android1.5で特有の問題が発生しているようです。HttpURLConnection.getResponseCode()2番目の接続は常に失敗します-1

問題を明らかにするテストケースは次のとおりです。

基本的に、リクエストに署名してから入力ストリーム全体を消費すると、次のリクエストは結果コード-1で失敗します。入力ストリームから1文字を読み取っただけでは、失敗は発生しないようです。

これはどのURLでも発生しないことに注意してください。上記のような特定のURLだけです。

また、HttpURLConnectionの代わりにHttpClientを使用するように切り替えると、すべてが正常に機能します。

他の場所でも同様の問題と思われるものへの参照を見つけましたが、これまでのところ解決策はありません。それらが本当に同じ問題である場合、他の参照はそれを参照していないため、問題はおそらく道標にあるのではありません。

何か案は?

0 投票する
8 に答える
67707 参照

java - Java HttpURLConnection トラフィックのワイヤ ログを有効にする方法は?

別のプロジェクトでJakarta commons HttpClientを使用しましたが、「標準」の HttpUrlConnection を使用して、同じワイヤ ログ出力が必要です。

Fiddlerをプロキシとして使用しましたが、トラフィックを Java から直接ログに記録したいと考えています。

HTTP ヘッダーは HttpUrlConnection クラスによって書き込まれ、消費されるため、接続の入力ストリームと出力ストリームをキャプチャするだけでは不十分です。そのため、ヘッダーをログに記録することはできません。

0 投票する
4 に答える
415141 参照

java - Java で HTTP GET を実行するにはどうすればよいですか?

Java で HTTP GET を実行するにはどうすればよいですか?

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

httpurlconnection - ファイルサイズまたは時間に基づいて URL 接続を切断する - Java

複数のドキュメントをダウンロードして圧縮し、ユーザーが zip ファイルをダウンロードできるようにする必要があります。ドキュメントは順次ダウンロードされ、ドキュメントの数はさまざまなサイズの最大 30 ドキュメントです。より優れた機能があれば、URLConnection またはその他のオープン ソースの urlconnection API を使用する予定です。

サイズが大きい (40 ~ 50 MB の可能性がある) ファイルが存在する可能性があり、そのようなファイルのダウンロードに時間がかかる可能性があることを理解しておいてください。サイズを決定するロジックを用意し、サイズが大きいファイルやダウンロードにかなりの時間がかかるファイルをダウンロードしないようにしたいと考えています。

時間またはドキュメントのサイズに基づいて、ファイルのダウンロードを回避するための最善の方法について考えていただければ幸いです。

ありがとう。