当前位置: 首页 > 面试题库 >

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

龚沛
2023-03-14
问题内容

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

在下面的示例代码中,在调用Web服务时port.getCustomer(customerID);可能会引发Exception,例如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);
        }
    }

}


 类似资料:
  • 我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以

  • 如何从的结果中获取HTTP状态?

  • 我通过一个spring上下文注入了一个JAX RS客户端,如下所示: 在成功响应(200、202、204)的情况下,如何访问响应状态?

  • 我无法从类似200201的响应中获取成功响应状态代码。。我们可以很容易地从类中获得错误代码,比如和。是否有获取状态代码的解决方法?

  • 我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作: 如果状态代码为4xx或5xx,我将抛出异常,或者返回内容: 这里是类型为的对象。但当我运行此程序时,我得到: 我怎样才能避开这件事?

  • 我正在通过空手道API调用Web服务。当服务被执行时,我将获得预期的HTTP状态204。然而,当我记录响应时,我得到了空白。 下面是我的webservice调用、响应和日志输出 我知道我得到了正确的回应,因为我的日志显示以下内容 但是karate.log不显示状态代码。我需要状态代码,这样我就可以根据我的期望值断言状态,从而通过/失败测试 你能建议如何从karate.call结果中提取HTTP状态