java 客户端调用 .net webservice 添加

来源:互联网 发布:mysql 数据库撞库工具 编辑:程序博客网 时间:2024/05/21 09:03
<pre name="code" class="java">使用wadl2java 自动生成客户端代码,有个测试类可以直接测试
  URL wsdlURL = TestService.WSDL_LOCATION;        if (args.length > 0 && args[0] != null && !"".equals(args[0])) {             File wsdlFile = new File(args[0]);            try {                if (wsdlFile.exists()) {                    wsdlURL = wsdlFile.toURI().toURL();                } else {                    wsdlURL = new URL(args[0]);                }            } catch (MalformedURLException e) {                e.printStackTrace();            }        }        //要加header的话,改为此方式(通过拦截器的方法添加header,拦截器<span style="font-family: Arial, Helvetica, sans-serif;">SoapHeaderInterceptor代码在后面</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>        JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();        SoapHeaderInterceptor ash = new SoapHeaderInterceptor();ArrayList list = new ArrayList();// 添加soap header 信息list.add(ash);factory.setOutInterceptors(list);factory.setServiceClass(TestServiceSoap.class);factory.setAddress(wsdlURL.toString());factory.getInInterceptors().add(new LoggingInInterceptor());        factory.getOutInterceptors().add(new LoggingOutInterceptor());        TestServiceSoap port =(TestServiceSoap) factory.create();        //不加header的话,使用此方式       // TestService ss = new TestService(wsdlURL, SERVICE_NAME);        //TestServiceSoap port = ss.getTestServiceSoap();                  System.out.println("Invoking getPaymentRecord...");        java.lang.String canshu1= "aaaa";        java.lang.String canshu2= "bbb";        javax.xml.ws.Holder<java.lang.Integer> out_canshu1= new javax.xml.ws.Holder<java.lang.Integer>();//out参数,如果调用的是.net服务, 使用wadl2java 自动生成客户端代码的话,会作为out参数放到参数中        javax.xml.ws.Holder<java.lang.String> out_canshu2= new javax.xml.ws.Holder<java.lang.String>();//其他的out参数。一定要是new 的,不能用默认值null,会获取不到值        port.getTestMethod();//调用对应的方法        System.out.println("getTestMethod.out参数1=" + out_canshu1.value);        System.out.println("getTestMethod._out参数2=" + out_canshu2.value);        
public class SoapHeaderInterceptor extends AbstractSoapInterceptor {public SoapHeaderInterceptor() {super(Phase.POST_LOGICAL);}@Overridepublic void handleMessage(SoapMessage message) throws Fault {List<Header> headers = message.getHeaders();CredentialSoapHeader testHeader=new CredentialSoapHeader();testHeader.setUserCode("xxx");testHeader.setPassword("xxx");JAXBElement<CredentialSoapHeader> testHeaders = new ObjectFactory().createCredentialSoapHeader(testHeader);try {Header header = new Header(testHeaders.getName(), testHeader,new JAXBDataBinding(CredentialSoapHeader.class));headers.add(header);message.put(Header.HEADER_LIST, headers);} catch (JAXBException e) {e.printStackTrace();}}}


0 0
原创粉丝点击