次のコードを使用して、httpclient-4を使用してストリームのコンテンツ(この場合は巨大なファイル)をTomcatのアップロードサーブレットに送信しています。
HttpRequest httpRequest = new HttpPut(destination);
InputStreamEntity entity = new InputStreamEntity(inputStream, contentLength);
((HttpPut)httpRequest).setEntity(entity);
httpClient.execute(httpRequest,handler);
それはうまくいきました。後で、許可されていないユーザーがファイルをアップロードするのを防ぐための認証メカニズムを追加しました。誰かが認証されずにアップロードしようとすると、サーブレットは直接応答します
response.sendError(HttpServletResponse.SC_FORBIDDEN)
リクエストのInputStreamを処理することさえありません。
私が直面している問題は、サーバー側で要求が拒否されたにもかかわらず、クライアントがInputStreamのコンテンツ全体を送信し続け、ネットワークの使用がまったく役に立たないことです。
httpclientのドキュメントを調べましたが、残念ながらこの点については何も見つかりませんでした。また、Tomcat側を調べて、リクエストを中止できるかどうかを確認しましたが、可能ではないようです。
この状況でストリームのアップロードをキャンセルする方法はありますか?
任意の洞察をいただければ幸いです。
ありがとう