java - JAX-WS 客户端获取响应 header

标签 java web-services jax-ws

我正在尝试实现一些逻辑。使用 JAX-WS 客户端 (wsimport) 调用 WCF 服务后,我收到 HTTP 401403 错误。

com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized

调用电话后如何获取响应 header ?我需要实现SOAPHandler.class吗?

最佳答案

可以在客户端的传入响应中访问 HTTP header 。下面是演示如何执行此操作的 Handler 代码(请参阅 Access HTTP headers in a Handler 了解 GlassFish Metro ):

public class ClientHandler implements SOAPHandler<SOAPMessageContext> {
    public boolean handleMessage(SOAPMessageContext context) {
        if (!(Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY)) {
            Map<String, List<String>> map = (Map<String, List<String>>) 
                context.get(MessageContext.HTTP_RESPONSE_HEADERS);
            List<String> contentType = getHTTPHeader(map, "Content-Type");
            if(contentType != null){
                StringBuffer strBuf = new StringBuffer();
                for(String type : contentType){
                    strBuf.append(type);
                }
                System.out.println("Content-Type:"+strBuf.toString());
            }
        }
        return true;
    }


    private @Nullable
    List<String> getHTTPHeader(Map<String, List<String>> headers, String header){
        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
            String name = entry.getKey();
            if(name.equalsIgnoreCase(header))
                return entry.getValue();
        }
        return null;
    }
}

关于java - JAX-WS 客户端获取响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854286/

相关文章:

java - 我可以设置一个类,比如 class = 8

java - 当仅给定类名作为该类型的字符串时转换为未知类型

使用信任库的java ssl连接

java - Java GC 是否会释放数组的 null 元素?

ios - 如何使用 token 化来保护 Facebook 登录的 Web 服务方法?

java - 使用附件调用 Web 服务

java - 使用 JAX-WS 在 java 中返回原始 SOAP 响应

c# - 从 .NET 调用带有 WS Security 的 Web 服务

web-services - 从网络访问魔兽世界数据

java - 在多个服务之间重用 CXF jaxb 上下文