有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中用JAX WS验证响应调用的web服务

我有一个关于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-Interface

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

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

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

我如何使用jax-ws做到这一点

谢谢大家


共 (1) 个答案

  1. # 1 楼答案

    您需要将端口强制转换为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库