java - 如何获取 JAX-WS 响应 HTTP 状态代码

标签 java jax-ws

调用 JAX-WS 端点时,如何获取 HTTP 响应代码?

在下面的示例代码中,在 port.getCustomer(customerID); 调用 Web 服务时,可能会抛出异常,例如 401500

在这种情况下,如何从 HTTP 响应中获取 HTTP 状态代码?

@Stateless
public class CustomerWSClient {

    @WebServiceRef(wsdlLocation = "/customer.wsdl")
    private CustomerService service;

    public void getCustomer(Integer customerID) throws Exception {
        Customer port = service.getCustomerPort();
        port.getCustomer(customerID); // how to get HTTP status           
    }

}

最佳答案

完成@Praveen回答后,您必须将port转换为原始BindingProvider,然后从上下文中获取值。

不要忘记,如果您的托管 Web 服务客户端发生异常,事务将被标记为回滚。

@Stateless
public class CustomerWSClient {

    @WebServiceRef(wsdlLocation = "/customer.wsdl")
    private CustomerService service;

    public void getCustomer(Integer customerID) throws Exception {
        Customer port = service.getCustomerPort();
        try {
            port.getCustomer(customerID);  
        } catch(Exception e) {
            throw e;
        } finally {
            // Get the HTTP code here!
            int responseCode = (Integer)((BindingProvider) port).getResponseContext().get(MessageContext.HTTP_RESPONSE_CODE);
        }
    }

}

关于java - 如何获取 JAX-WS 响应 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000429/

相关文章:

java - 为什么我的安全 iframe 被报告为不安全?

Java Web 服务客户端 cdata 标签

java - Java Web 服务中的单例对象

java - 当 SOAP 主体包含 UTF-8 BOM 时出现 JAX-WS 错误

java - 带有imageview和textview的Android自定义按钮?

java - 在java中从csv中读取带逗号的值

Java 未经检查的转换

java - 如何在机器人框架中使用 "Choose File"关键字上传文件

java - 如何使用参数初始化 Java EE 5 JAX-WS 2.0 Web 服务

java - JAX-WS 能否用于让服务器在客户端上执行 Web 服务调用?