ApacheHTTPクライアントを使用してHttpPOSTリクエストを作成しようとしています。HTTP POSTリクエスト(アプリケーションで受信)の内容を別のHTTP POSTリクエスト(アプリケーションから別のURLに開始)にコピーしようとしています。コードを以下に示します。
httpPost = new HttpPost(inputURL);
// copy headers
for (Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements();) {
String headerName = e.nextElement().toString();
httpPost.setHeader(headerName, request.getHeader(headerName));
}
BufferedInputStream clientToProxyBuf = new BufferedInputStream(request.getInputStream());
BasicHttpEntity basicHttpEntity = new BasicHttpEntity();
basicHttpEntity.setContent(clientToProxyBuf);
basicHttpEntity.setContentLength(clientToProxyBuf.available());
httpPost.setEntity(basicHttpEntity);
HttpResponse responseFromWeb = httpclient.execute(httpPost);
基本的に、私はパラメータとしてURLを取得し、URLへのリクエストを転送してから、カスタムのルックアンドフィールでページなどを提供するプロキシアプリケーションを実装しようとしています。
これがHttpServletRequestrequest
です。コンテンツの長さの設定で問題が発生しています。clientToProxyBuf.available()
デバッグを通じて、正しい長さの入力ストリームが得られず、Httpエラー400IEとChromeが発生していることがわかりましたError 354 (net::ERR_CONTENT_LENGTH_MISMATCH): The server unexpectedly closed the connection
。
私はそれを間違っていますか?それを達成する他の方法はありますか?