我想使用Jetty和HttpClient类从外部服务器获取内容。现在我想将获得的响应复制为HttpServletResponse
并返回到客户端(浏览器)。我尝试了一些但不能成功的东西。我觉得我没有完成内部课程。
这是我的代码:
public void getContentsTo(String uri,HttpServletRequest request,final HttpServletResponse response){
HttpClient httpClient=new HttpClient();
httpClient.newRequest(uri).send( new org.eclipse.jetty.client.api.Response.CompleteListener() {
@Override
public void onComplete(Result result) {
response=(HttpServletResponse)result.getResponse();
};
});
错误在于将response
指定为:
无法分配最终的局部变量响应,因为它是 在封闭类型中定义
如果我不使用final
作为参数,则还会出现错误,
不能引用内部类中的非最终变量响应 用不同的方法定义
原因是什么?
答案 0 :(得分:1)
result.getResponse()响应是一个org.eclipse.jetty.client.HttpResponse,它在其沿袭中的任何地方都没有HttpServletResponse。如果我按照您要执行的操作进行操作,则需要将结果中的信息复制到HttpServletResponse对象中。
答案 1 :(得分:0)
params中有一个final
(!)变量,您尝试在代码中更改它。这可能是错误的原因。
为什么final
?删除此标识符,然后重试。
好的,我会尝试这样做。
如果您不在代码中使用response
参数,我可以看到,为什么不在内部类中将其声明为实例变量?