在 Java 中使用 JAX WS 验证响应调用

Verifying response call with JAX WS in Java

我有一个关于 jax wsJava 的问题。 事实上,我有一个调用 web service 方法的客户端:

客户端实现

      URL url = new URL("file:/D:/Projects/Mywsdl.wsdl");
      QName qname = new QName("http://adresse/", "ImpWSService");
      Service service = Service.create(url, qname);
          //web service Interface
      DomaineIntWS domaineIntWS = service.getPort(DomaineIntWS.class);
          //web service methode call   
      String echo = scciProxyIntWS.echocall("xxx");

WS 接口 :

         import javax.jws.WebParam;
         import javax.jws.WebService;

         @WebService
         public abstract interface DomaineIntWS
         {
         public abstract String echocall(@WebParam(name="testEcho") String paramString);
         }

我的问题是如何在我的客户端实现中添加一种方法来测试 ws 结果的调用,例如测试代码响应是否等于 200 OK?

如何使用 jax ws 做到这一点?

谢谢大家。

您需要将端口转换为 BindingProvider,如下所示:

    URL url = new URL("file:/D:/Projects/Mywsdl.wsdl");
    QName qname = new QName("http://adresse/", "ImpWSService");
    Service service = Service.create(url, qname);
    //web service Interface
    DomaineIntWS domaineIntWS = service.getPort(DomaineIntWS.class);
    try {
    String echo = domaineIntWS.echocall("xxx");
    } catch (Exception e) {
      //do something with a possible exception
    } finally {

    BindingProvider bpDomaineIntWS = (BindingProvider) domaineIntWS;
    int httpResponseCode =(Integer) bpDomaineIntWS.getResponseContext().get(MessageContext.HTTP_RESPONSE_CODE);

}

旁注: 请注意,即使您获得了响应代码的值,JAX-WS 实现也会处理响应。

在大多数情况下,您不必担心自己处理代码和其他东西。这就是 JAX-WS 的全部目的。否则您将使用原始的 HttpClient 库。