0

我想在 HTTP 客户端中使用 CXF 拦截器修改 HTTP 请求 URI 和 HTTP 请求方法。

我开发了这样的东西:

public class MyInterceptor extends AbstractPhaseInterceptor<Message> {    

    public MyInterceptor() {
        super(Phase.PRE_PROTOCOL);
    }

    public void handleMessage(Message message) {
            // this returns me correct path and method
            // String path = (String) message.getExchange().getOutMessage().get(Message.REQUEST_URI);
            // String method = (String) message.getExchange().getOutMessage().get(Message.HTTP_REQUEST_METHOD);

            // this does not work as expected
            String path = (String) message.get(Message.REQUEST_URI);
            String method = (String) message.get(Message.HTTP_REQUEST_METHOD);

            // do things here
    }

}

为什么我需要使用exchange/OutMessage来获取当前消息的数据,而不能直接使用message?

如何编辑这两个值?我尝试使用message.put(<key>, <value>)和相同的exchange/OutMessage,但没有任何修改。

4

1 回答 1

0

我相信,走上这条路,您总是会将该值设为空。您可以尝试以下代码,以获取 uri 的实际值:

 String requestURI = (String) message.get(Message.class.getName() + ".REQUEST_URI");
于 2014-02-21T10:29:09.483 回答