Java 使用Jetty 9从HttpClient获取响应时出错

Java 使用Jetty 9从HttpClient获取响应时出错,java,servlets,jetty,jetty-httpclient,Java,Servlets,Jetty,Jetty Httpclient,我想使用Jetty和HttpClient类从外部服务器获取内容。现在,我想将获得的响应复制为HttpServletResponse,并返回到客户端(浏览器)。我试过一些事,但没有成功。我想我还没有和班里人相处好 这是我的密码: public void getContentsTo(String uri,HttpServletRequest request,final HttpServletResponse response){ HttpClient httpClient=new H

我想使用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();
            };
        });
错误在于将
响应分配为:

无法指定最终的局部变量响应,因为它是 在封闭类型中定义

如果我不对参数使用
final
,也会出现如下错误:

无法在内部类中引用非最终变量响应 用不同的方法定义


原因是什么?

您在参数中有一个
final
(!)变量,您试图在代码中更改它。这可能是错误的原因

为什么是
最终版本
?请删除此标识符,然后重试

好的,我会尽量这样做


如我所见,如果在代码中不使用
response
参数,为什么不在内部类中将其声明为实例变量?

result.getResponse()响应是一个org.eclipse.jetty.client.HttpResponse,它的沿袭中没有HttpServletResponse。如果我遵循您试图执行的操作,您将需要复制您得到的结果中的信息,并将其放入您的HttpServletResponse对象。

代码中的final是由我的第一个错误建议的。错误为:“不能引用在不同方法中定义的内部类中的非最终变量响应”Ok!错误不在类型转换上,我认为错误在于从innerclass设置outerclass变量。当然,但这是最终的错误,您不能像显示的那样替换对象。因此,它们是完全不同的对象类型。