我正在尝试使用 apache HTTP 客户端发出 Http POST 请求。我正在尝试将 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,然后以自定义外观提供页面等。
这request
是 HttpServletRequest。我在设置内容长度时遇到问题。通过调试,我发现clientToProxyBuf.available()
没有给我正确的输入流长度,并且我得到了 Http 错误 400 IE 和Error 354 (net::ERR_CONTENT_LENGTH_MISMATCH): The server unexpectedly closed the connection
chrome。
我做错了吗?还有其他方法可以实现吗?