java 调用 webService Xfire接口,xml解析为object

一开始另外一个项目上面有现成的XML转对象的方法(xmlString2Object),把jar和类都引用到项目上发现死活都解析不了,研究了一天;后来果断放弃去网上找寻另外的方法.网上说的比较多的可能是利用XStream在java对象和XML之间相互转换,试了试感觉用的不是很爽就没用了。后面用的是JAXB来解决的。
package com.founder.ec.web.model;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import com.founder.ec.base.bo.BaseBO;


@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "ResultList")  
@XmlType(propOrder = { "ReturnDetail"})
public class ResultList extends BaseBO {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private List<ReturnDetail> ReturnDetail;

	public List<ReturnDetail> getReturnDetail() {
		return ReturnDetail;
	}

	public void setReturnDetail(List<ReturnDetail> returnDetail) {
		ReturnDetail = returnDetail;
	}
	
}

package com.founder.ec.web.model;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import com.founder.ec.base.bo.BaseBO;


@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ReturnDetail")
@XmlType(propOrder = { "logistic_name", "logistic_no", "goods_no", "goods_amount", "opt_time", "user_id", "tui_or_huan", "refused_remark", "order_state" })
public class ReturnDetail extends BaseBO {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String logistic_name;

	private String logistic_no;

	private String goods_no;

	private String goods_amount;

	private String opt_time;

	private String user_id;

	private String tui_or_huan;

	private String refused_remark;

	private String order_state;

	public String getLogistic_name() {
		return logistic_name;
	}

	public void setLogistic_name(String logistic_name) {
		this.logistic_name = logistic_name;
	}

	public String getLogistic_no() {
		return logistic_no;
	}

	public void setLogistic_no(String logistic_no) {
		this.logistic_no = logistic_no;
	}

	public String getGoods_no() {
		return goods_no;
	}

	public void setGoods_no(String goods_no) {
		this.goods_no = goods_no;
	}

	public String getGoods_amount() {
		return goods_amount;
	}

	public void setGoods_amount(String goods_amount) {
		this.goods_amount = goods_amount;
	}

	public String getOpt_time() {
		return opt_time;
	}

	public void setOpt_time(String opt_time) {
		this.opt_time = opt_time;
	}

	public String getUser_id() {
		return user_id;
	}

	public void setUser_id(String user_id) {
		this.user_id = user_id;
	}

	public String getTui_or_huan() {
		return tui_or_huan;
	}

	public void setTui_or_huan(String tui_or_huan) {
		this.tui_or_huan = tui_or_huan;
	}

	public String getRefused_remark() {
		return refused_remark;
	}

	public void setRefused_remark(String refused_remark) {
		this.refused_remark = refused_remark;
	}

	public String getOrder_state() {
		return order_state;
	}

	public void setOrder_state(String order_state) {
		this.order_state = order_state;
	}

}
public static void main(String[] args) throws Exception {
		String xml = "<?xml version='1.0' encoding='utf-8'?><ResultList><ReturnDetail><logistic_name>物流公司名称(顺风)</logistic_name><logistic_no>物流号(421234646)</logistic_no><goods_no>商品编码(11202)</goods_no><goods_amount>商品数量(1)</goods_amount><opt_time>操作时间(2013-06-21 15:00:12)</opt_time><user_id>操作人(2288)</user_id><tui_or_huan>退换货类型(1)</tui_or_huan><refused_remark>拒收原因(已损坏)</refused_remark><order_state>(commit)</order_state></ReturnDetail><ReturnDetail><logistic_name></logistic_name><logistic_no></logistic_no><goods_no>11202</goods_no><goods_amount>1</goods_amount><opt_time>2013-06-21 15:00:12</opt_time> <user_id>2288</user_id><tui_or_huan>1</tui_or_huan><refused_remark>1</refused_remark><order_state>commit</order_state></ReturnDetail></ResultList>";
		JAXBContext context = JAXBContext.newInstance(ResultList.class);
		Unmarshaller marchaller = context.createUnmarshaller();
		ResultList p2 = (ResultList) marchaller.unmarshal(new StringReader(xml));
		System.out.println("Country:" + p2.getReturnDetail().size() + "==" + p2.getReturnDetail().get(0).getLogistic_name());

		
//		StringWriter sw = new StringWriter();
//		Marshaller marchal = context.createMarshaller();
//		marchal.marshal(p2, sw);
//		String xmlResult = sw.toString();
//		System.out.println(xmlResult);

	}

	
	public static String webServiceXfire() throws MalformedURLException, Exception {
		String result = "";
		String url = "http://192.168.2.105:100/ec-dec/services/EC_WS?wsdl";
		String methodName = "getOrderReturnTui";
		Object[] rslts = { "" };
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String start = sdf.format(new Date()) + " 00:00:00";
			String end = sdf.format(new Date()) + " 23:59:00";
			Client client = new Client(new URL(url));
			Object[] objs = new Object[] { null, null, null };
			rslts = client.invoke(methodName, objs);
			if (rslts != null & rslts.length > 0) {
				result = (String) rslts[0];
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("===========" + result);
		return result;

		// Client client = new Client(new URL("http://192.168.2.105:100/ec-dec/services/EC_WS?wsdl"));
		// Object[] results = client.invoke("getOrderReturnTui", new Object[] { null,null, "101302" });
		// System.out.println(results[0]);
		// return results[0].toString();
	}




第一次调用webService 才知道分call和xfire,而且调用的方法也完全不相同,这样写有问题的是如果webservice接口那边某个属性换了(如goods_no换成goods_id),这边就不能执行,也跟着换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值