axis调用需要用户名,密码验证的第三方webservice接口

用axis调用webservice接口,webservice接口设置了用户名,密码验证。

webservice接口的研发人员提供的报文:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webserviceinterface.chinautrust.com.cn">
  <soapenv:Header>
      <AuthenticationToken>
         <Username>user1</Username>
         <Password>pass1</Password>
      </AuthenticationToken>
   </soapenv:Header>
   <soapenv:Body>
      <web:registerAppUser>
         <web:in0>face</web:in0>
         <web:in1>[{"IDCard":"sss","loginName":"sss","passWord":"sss","sysFlag":"face"},{"IDCard":"bbbb","loginName":"sss","passWord":"sss","sysFlag":"face"}]</web:in1>
      </web:registerAppUser>
   </soapenv:Body>
</soapenv:Envelope>

注意:认证的时候,SOAPHeaderElement header = new SOAPHeaderElement("", "AuthenticationToken");

AuthenticationToken与报文中<AuthenticationToken>一致。

所需的jar包

            String goal_url = "http://12.56.7.66:8080/idm/services/IAppAccount";
            Service service = new Service();
            Call call = (Call) service.createCall();
            // call.setTargetEndpointAddress(goal_url);
            //设置第三方webservice接口地址。
            call.setTargetEndpointAddress(new java.net.URL(goal_url));
            //设置需要访问的第三方webservice接口中的方法名称。
            call.setOperationName(new QName("registerAppUser"));
            //向第三方webservice接口中的方法传参,in0为webservice接口中的方法参数名,就是形参,XMLType.XSD_STRING为             参数的数据类型。
            call.addParameter("in0", XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter("in1", XMLType.XSD_STRING, ParameterMode.IN);
            // call.getMessageContext().setUsername("user1");
            // call.getMessageContext().setPassword("pass1");
            //webservice接口访问需要认证,认证操作。
            SOAPHeaderElement header = new SOAPHeaderElement("", "AuthenticationToken");
            header.setPrefix("");
            header.addChildElement("Username").addTextNode("user1");
            header.addChildElement("Password").addTextNode("pass1");
            call.addHeader(header);
            String data = JSONArray.fromObject(list).toString();
            
            //设置webservice接口返回值类型。
            call.setReturnType(XMLType.XSD_BOOLEAN);
            //执行访问webservice接口的操作。
            boolean result = (boolean) call.invoke(new Object[] { sysFlag, data });

猜你喜欢

转载自blog.csdn.net/weixin_41913605/article/details/90171375