有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在ClientRequestFilter中附加查询参数

我只需要将查询参数附加到传出请求上。(JavaEE7.0,JAX-RS2.0)

具体来说,我目前使用的是RESTeasy客户端3.0.14版,因此我使用奇特的接口代理系统进行调用。我试图制作这样的东西:

myapplication/api/path?timestamp=000

与:

@Provider
public class MyRequestFilter implements ClientRequestFilter {

    @Context
    private HttpServletRequest servletRequest;

    public void filter(ClientRequestContext requestContext) throws IOException {

        servletRequest.getParameterMap().put("timestamp", new String[]{
                String.valueOf(new Date().getTime())
        });

    }
}

我确保我也在client.register(MyRequestFilter.class)注册了它。请随意提问。谢谢


共 (1) 个答案

  1. # 1 楼答案

    归功于@peeskillet

    requestContext重新生成URI,如下所示:

    requestContext.setUri(UriBuilder.fromUri(requestContext.getUri()).queryParam("key", value).build());
    

    现在,您可以使用

    requestContext.getUri().toString();
    

    再次验证在创建REST客户端时是否注册了它

    client.register(MyRequestFilter.class);