axis调用webService(二)

axis调用webService(二)

介绍
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是1.1,可以从 http://ws.apache.org/axis/index.html下载。下图是AXIS核心引擎的体系结构图:
代码
pom代码里面引入axis依赖

  
        org.apache.axis
        axis
        1.4
    
    
        axis
        axis-wsdl4j
        1.5.1
    
    
        javax.xml
        jaxrpc
        1.1
    
    
        commons-discovery
        commons-discovery
        0.2
    

    
        javax.mail
        mail
        1.4
    
    
        javax.activation
        activation
        1.1.1
    

客户端代码调用示例
public class ExternalUnitService{

@Autowired
private IOrgUnitService service;

@Autowired
private OrgUnitMapper mapper;

public void selectFromOrgUnit(String date1,String date2,String crbuid,String userName,String password){
	String method="queryUnit";
	String str = invokeRemoteFuc(date1,date2,crbuid,method,userName,password);
	JSONArray json = JSONArray.fromObject(str);
	List list = JSONArray.toList(json, HrOrgUnit.class);
	for(HrOrgUnit hrOrgUnit :list){
		List hrOrgUnits = service.selectByUnitCode(hrOrgUnit.getUnitCode());
		if(hrOrgUnits.size()==0){
			hrOrgUnit.setUnitId(null);
			mapper.insertSelective(hrOrgUnit);
		}else{
			hrOrgUnit.setUnitId(hrOrgUnits.get(0).getUnitId());
			mapper.updateByPrimaryKey(hrOrgUnit);
		}
	}
	
}

public static String invokeRemoteFuc(String date1,String date2,String crbuid,String method,String userName,String password){
	  
    String endpoint="http://192.168.1.156:8080/core/ws/UnitService?wsdl";  
    String result="[]";  
    System.out.println(result);  
  
    org.apache.axis.client.Service service =new org.apache.axis.client.Service();  
    Call call;  
    Object[] object=new Object[4];  //Object用来存储方法的参数  
    object[0]="111";  //相应的参数,由于保密  
  
    try {  
        call=(Call)service.createCall();  
        call.setTargetEndpointAddress(endpoint); //远程调用路径  
       // call.setOperationName(new QName("delete"));  //调用的方法名  
        String targetNamespace = "http://ws.dcpc.hap.hand.com/";
        call.setOperationName(new QName(targetNamespace, method));  
       
        //设置参数名: 
        call.addParameter("lastUpdateDateBegin", //参数名  
        		XMLType.XSD_STRING,//参数类型:String  
                ParameterMode.IN); //参数模式:'IN' or 'OUT'  
        call.addParameter("lastUpdateDateEnd", //参数名  
        		XMLType.XSD_STRING,//参数类型:String  
                ParameterMode.IN); //参数模式:'IN' or 'OUT' 
        call.addParameter("crbuid", //参数名  
        		XMLType.XSD_STRING,//参数类型:String  
                ParameterMode.IN); //参数模式:'IN' or 'OUT' 
  
        //设置返回值类型:  
        call.setReturnType(XMLType.XSD_STRING);   //返回值类型:String  
        call.setUsername(userName);
        call.setPassword(password);
        call.setTimeout(1000000);
        result=(String)call.invoke(new Object[] {date1,date2,crbuid} );  //远程调用  
        System.out.println(result);
    }catch (ServiceException e) {  
        e.printStackTrace();  
    }catch (Exception e){  
        e.printStackTrace();  
    }  
    return result;  

}

}

axis调用webService(二)_第1张图片

你可能感兴趣的:(JAVA)