调用webservice接口的一些方法

1.使用xfire

public void list(){
		//MdPsBaseInfoListService 接口类
		Service serviceModel = new ObjectServiceFactory().create(MdPsBaseInfoListService.class);       
		XFire xfire = XFireFactory.newInstance().getXFire();
		    XFireProxyFactory factory = new XFireProxyFactory(xfire);  
		    //接口调用的URL
		    String serviceUrl = "http://192.168.1.231:8080/wqms/services/MdPsBaseInfoListService";
		    MdPsBaseInfoListService client = null;
		    try {
		    	client = (MdPsBaseInfoListService) factory.create(serviceModel, serviceUrl);
		    	//调用方法,传入需要的参数,接收返回值
		    	String s = client.getBaseInfoXml("合肥金鹰纸业有限公司", "", "");
		    	System.out.println(s);
		    	
		    } catch (MalformedURLException e) {
		    	e.printStackTrace();
		    }    
	}
需要知道接口类的名字,然后写一个接口类。

2.使用axis2

package com.thunisoft.hlwzbdb.mgr.business.ajgl.record;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.QName;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.apache.commons.lang.StringUtils;

import com.thunisoft.hlwzbdb.mgr.business.ajgl.record.bean.AjBean;
import com.thunisoft.hlwzbdb.mgr.business.ajgl.record.bean.RecordingResult;
/**
 *	Ajgl调用 WebService接口类
 *	处理返回的数据
 */

public class WsCallerAj {
	
	private static String wsdl = "http://172.16.7.226:5080/susong51/services/ajxxWebService/getAjList?jsonStr=";
	/**
	 *  调用webservice接口
	 *  
	 */
	public static String getInterface(String corpId,int page,int limit,
	   		 String cAh,String ajMc,String dsrMc,String cbrMc){
		JSONObject req = WsCallerAj.parseStr2Json(corpId, page, limit, cAh, ajMc, dsrMc, cbrMc);
		return querySuSong51(req,wsdl);
	}
	
	/**
	 * 将参数拼接成json字符串
	 * @return
	 */
	public static JSONObject parseStr2Json(String fyid,int page,int limit,String ah,
			String ajmc,String dsr,String cbr){
		JSONObject json = new JSONObject();
		json.put("fyid",fyid);
		json.put("page", page);
		json.put("limit", limit);
		if(StringUtils.isNotEmpty(ah)){
			json.put("ah",ah);
		}else{
			json.put("ah","");
		}
		if(StringUtils.isNotEmpty(ajmc)){
			json.put("ajmc",ah);
		}else{
			json.put("ajmc","");
		}
		if(StringUtils.isNotEmpty(dsr)){
			json.put("dsr",ah);
		}else{
			json.put("dsr","");
		}
		if(StringUtils.isNotEmpty(cbr)){
			json.put("cbr",cbr);
		}else{
			json.put("cbr","");
		}
		return json;
	}
	/**
	 * 将json转换成list
	 * @param str
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static RecordingResult parseJson2List(String str){
		JSONObject obj = JSONObject.fromObject(str);
		RecordingResult rr = new RecordingResult();
		if(obj.getBoolean("success")){
			rr.setSuccess(true);
			rr.setTotal(obj.getInt("total"));
			
			JSONArray ajList = obj.getJSONArray("ajList");
			List<AjBean> ab = new ArrayList<AjBean>();
			
			for(int i=0;i<ajList.size();i++){//循环第一层list
				JSONObject o = (JSONObject) ajList.get(i);
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				AjBean a = new AjBean();
				a.setBh(o.getString("bh"));
				a.setAh(o.getString("ah"));
				a.setAjmc(o.getString("ajmc"));
				try {
					a.setLarq(sdf.parse(o.getString("larq")));
				} catch (ParseException e) {
					System.out.println("接收接口传过来的数据(larq)格式不正确!");
					e.printStackTrace();
				}
				a.setAydm(o.getInt("aydm"));
				a.setAymc(o.getString("aymc"));
				a.setCbts(o.getString("cbts"));
				a.setCbr(o.getString("cbr"));
				a.setDsr(o.getString("dsr"));
				
				if(o.containsKey("spzzcyList")){//判断是否存在第二层list
					JSONArray sp = o.getJSONArray("spzzcyList");//第二层list
					a.setSpzzcyList(sp);
				}
				ab.add(a);
			}
			rr.setAjList(ab);
			
		}else{
			rr.setSuccess(false);
			rr.setMessage(obj.getString("message"));
			rr.setAjList(null);
		}
		return rr;
	}
	
	//axis2
	public static String querySuSong51(JSONObject jsonStr,String wsdl)  {
    	EndpointReference targetEPR = new EndpointReference(wsdl);
        RPCServiceClient serviceClient = null;
		try {
			serviceClient = new RPCServiceClient();
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		Options options = serviceClient.getOptions();
		options.setTo(targetEPR);
		options.setAction("getAjList");
		
		Object[] params = new Object[] { jsonStr.toString() };   //参数    
		System.out.println("参数转换为json格式:"+jsonStr.toString());
		Class[] returnTypes = new Class[] { String.class };
		QName opGetProUser = new QName("http://webservice.susong51.thunisoft.com", "getAjList");
		
		Object[] ret = null;
		try {
			ret = serviceClient.invokeBlocking(opGetProUser, params, returnTypes);
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		if(ret == null) {
			System.out.println("调用远程出错");
		}else{
			return ret[0].toString();
		}
		return null;
    }
}
个人日记,有不对的地方请批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值