详解 Web service Axis2 JAVA调用.net接口 返回String的xml格式数据

  Axis2相关jar包地址下载 http://download.csdn.net/detail/xyh94233/6329671
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import org.apache.axis.encoding.XMLType;

public class WebServiceAxisXml {
	
	public String sendUrl(Connection con,String accessType){
		String xml = "";
		String beginDate = "";
		String endDate = "";
		final String org_method = "GetAdmOrgUnitByUpdateTime";
		final String usr_method = "GetLimitedEmpProfileByUpdateTime";
		//发送请求的url
		final String org_url = "http://10.103.117.13:8055/WebService/AdmOrgUnitWSforHR.asmx";
		final String usr_url = "http://10.103.117.13:8055/WebService/EmpWSforHR.asmx";
		//命名空间 注意:此处为.net设置的名称,我们只要名称相同即可,文章末尾有截图展示.net接口中命名空间的位置以及名称;如果不设置该命名空间		//有可能报出Server did not recognize the value of HTTP Header SOAPAction 服务器无法识别的SOAPAction HTTP头的值 
		final String qName = "http://newsso.xxx.com/";
		//接收参数的名称
		String param_begin = "BeginDate";
		String param_end = "EndDate";
		String url = "";
		String method = "";
		if(accessType.equals("1")){
			//org 获取的用户组信息
			url = org_url;
			method = org_method;
		}else{
			//user 用户信息
			url = usr_url;
			method = usr_method;
		}
		
		try {
			//获取当前时间
			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			Date date = new Date();
			beginDate = format.format(date);//+" 00:00:00";
		    endDate = format.format(date);//+ " 23:59:59";
		
			//创建服务客户端.
			Service service = new Service();
			
			Call call = null;
		
			// 通过service创建call对象
			call = (Call) service.createCall();
			
			// 设置service所在URL(连接点)
			call.setTargetEndpointAddress(url);
		
		/**
		 * 设置要调用的方法:setOperationName的参数是javax.xml.namespace.QName实例
		 * 创建javax.xml.namespace.QName实例,第一个参数是webservice的url
		 * 第二个对数是你调用的webservice方法名
		 */
		call.setOperationName(new QName("http://hr.xxx.com/", method));
		//需要传递过去的参数[参数名称,参数类型,传入] 这里必须用 new QName()不然可能对方接收不到该参数 
		call.addParameter(new QName(qName,param_begin),XMLType.XSD_STRING, ParameterMode.IN);
		call.addParameter(new QName(qName,param_end), XMLType.XSD_STRING, ParameterMode.IN);
		
		//设置返回的类型值 string
		call.setReturnType(XMLType.XSD_STRING);
		//设置可识别的http信息
		call.setUseSOAPAction(true);
		//访问.net命名空间名称+方法名称
		String path = qName + method;
		call.setSOAPActionURI(path);
		//通过invoke方法获取返回值xml的字符串,注意 new Object[]这个数组如果你不需要传值过去,也需要在这里定义一个空值
		xml = (String)call.invoke(new Object[]{beginDate,endDate});
		
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return xml;
	}
	
}

命名空间:
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值