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

时间:2013-05-21 13:12:38

标签: java servlets jetty

我想使用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作为参数,则还会出现错误,

  

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

原因是什么?

2 个答案:

答案 0 :(得分:1)

result.getResponse()响应是一个org.eclipse.jetty.client.HttpResponse,它在其沿袭中的任何地方都没有HttpServletResponse。如果我按照您要执行的操作进行操作,则需要将结果中的信息复制到HttpServletResponse对象中。

答案 1 :(得分:0)

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

为什么final?删除此标识符,然后重试。

好的,我会尝试这样做。

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