我有以下代码将httpresponse转换为httpservletresponse,如果通过http URL访问服务器,它可以正常工作,但它不适用于https。
问题是如果URL是HTTP,我从httpservletresponse获取空字符串。
public void extractResponse(HttpResponse httpResponse, HttpServletResponse response)
{
InputStream inputStream = null;
try {
inputStream = httpResponse.getEntity().getContent();
String responseStr = EntityUtils.toString(httpResponse.getEntity()); //Get the contect from httpresponse, it has the value I want
copyStream(inputStream, response.getOutputStream());
} catch (IllegalStateException | IOException e) {
}
finally{
if(inputStream != null)
{
try {
inputStream.close();
} catch (IOException e) {
}
}
}
}
/**
* Wrapper for IOUtils.copy
* @param input
* @param output
* @throws IOException
*/
public void copyStream(InputStream input, OutputStream output) throws IOException
{
IOUtils.copy(input, output);
}
仅供参考,我在两台服务器上都使用tomcat,而httpclient的版本是4.13。
答案 0 :(得分:0)
我自己弄明白了,这个问题是由两台服务器之间的HTTP Schema不一致造成的。
例如,如果您使用服务器A中的HTTPClient创建HTTP请求,并且请求将发送到服务器B,如果您使用HTTP架构(URL将为“http://example.com”)来访问服务器A,在创建HTTP请求时必须使用相同的HTTP模式,另一方面,如果在服务器A中使用HTTPS,则必须使用HTTPS访问服务器B,否则,它将无法工作。 / p>
确认一致的HTTP架构后,我在问题上发布的代码将有效。