方法1:
使用wsdl2java 命令行在客户端生成服务器端代码的代理代码
然后使用生成的服务器端代码代理,调用服务器端提供的方法
String url = SpringCfgPropHelper.getProperty("DMSWsdlUri").replaceAll("\\s+", "").replaceAll(",,+", ",");
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(DmsWService.class);
factory.setAddress(url);<pre name="code" class="java"><span style="white-space:pre"> </span> XXXservice <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">client = (XXXservice) factory.create(); </span>
//设置客户端的配置信息,超时等. Client proxy = ClientProxy.getClient(client); HTTPConduit conduit = (HTTPConduit) proxy.getConduit(); HTTPClientPolicy policy = new HTTPClientPolicy(); policy.setConnectionTimeout(10000000); //连接超时时间 policy.setReceiveTimeout(120000000);//请求超时时间. conduit.setClient(policy); String result=client.deliveryDataUpload(resume);
方法2:
public static String invoke(String url, String method, String xml) throws Exception {
String returns = null;
Client client = getClient(url);
try {
Object[] objects = client.invoke(method,xml);
returns = String.valueOf(objects[0]);
}catch(Exception e){
e.printStackTrace();
throw new Exception("网络异常,请重新登录");
}finally{
if(client!=null) client.destroy();
}
return returns;
}
private static Client getClient(String url){
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
for(int i=0;i<3;i++){
try{
Client client = dcf.createClient(url);
return client;
}catch(Exception e){
e.printStackTrace();
}
}
return null;
}
方法3;使用axis生成客户端:
Service service = new Service();
String url =SpringCfgPropHelper.getProperty("DMSWsdlUri").replaceAll("\\s+","").replaceAll(",,+", ",");
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
call.addParameter("xml", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
String result = (String) call.invoke(
"http://wso.integratio/",
"deliveryDataUploadXml", new Object[] { xml });
logger.info("传递接收结果是:" + result);