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

来源:互联网 发布:ubuntu 安装 deb 编辑:程序博客网 时间:2024/05/17 22:30
一开始另外一个项目上面有现成的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 0
原创粉丝点击