首页 » 技术分享 » 顺丰丰桥接口开发-java(下订单接口)

顺丰丰桥接口开发-java(下订单接口)

 

下订单接口,提交的数据如下:

<Request service = "OrderService" lang = "zh-CN" > 
<Head>SLKJ2019</Head>
<Body>
  <Order 
	orderid="SFKD-20160219000019" 
	j_company="深圳宝龙达信息技术股份有限公司" 
	j_contact="邓丽君" 
	j_tel="15323233432" 
	j_mobile="15322234342" 
	j_province="广东省" 
	j_city="深圳市"
	j_county="南山区"
	j_address="广东省深圳市南山区西丽镇塘朗同富裕工业城7栋" 
	d_contact="四海" d_tel="15023434543" 
	d_mobile="15423456545" 
	d_province="广东省" 
	d_city="深圳市" 
	d_county="南山区" 
	d_address="科技园软件产业基地" 
	express_type="1" 
	pay_method="1" 
	custid="7551234567" 
	parcel_quantity="1" 
	is_docall="0" 
	sendstarttime=""  
	remark="电子产品 笔记本+显卡"
        is_unified_waybill_no="1">
</Order>
</Body> 
</Request>

下单表单页面类似下图:
下单表单
接收到表单数据,需要转换成对应的xml数据提交,所以我们会根据xml结构构建对应的类,参考如下:
首先是最顶层的Request,主要看注解

@XmlRootElement(name="Request")
public class SfRequest {

	private String service;
	
	private String lang = "zh-CN";
	
	private String head = SfUtils.clientCode;
	
	private SfRequestBody body;

	public SfRequest() {}
	
	public SfRequest(String service) {
		this.service = service;
	}

	@XmlAttribute
	public String getService() {
		return service;
	}

	public void setService(String service) {
		this.service = service;
	}

	@XmlAttribute
	public String getLang() {
		return lang;
	}

	public void setLang(String lang) {
		this.lang = lang;
	}

	@XmlElement(name="Head")
	public String getHead() {
		return head;
	}

	public void setHead(String head) {
		this.head = head;
	}

	@XmlElement(name="Body")
	public SfRequestBody getBody() {
		return body;
	}

	public void setBody(SfRequestBody body) {
		this.body = body;
	}
}

然后是Body:

@XmlRootElement(name="Body")
public class SfRequestBody {
	SfRequestOrder order;

	public SfRequestBody() {}

	@XmlElement(name = "Order")  
	public SfRequestOrder getOrder() {
		return order;
	}

	public void setOrder(SfRequestOrder order) {
		this.order = order;
	}
}

然后就是Order,属性太多就不逐个列了,需要注意的是XmlAttribute和XmlElement的区别,对比xml一下就知道了:

@XmlRootElement(name="Order")
public class SfRequestOrder {
	……
	private SfRequestCargo cargo;
	public SfRequestOrder() {}
	
	@XmlAttribute(name="j_province")
	public String getJ_province() {
		return j_province;
	}

	public void setJ_province(String j_province) {
		this.j_province = j_province;
	}

	@XmlElement(name="Cargo")
	public SfRequestCargo getCargo() {
		return cargo;
	}

	public void setCargo(SfRequestCargo cargo) {
		this.cargo = cargo;
	}

}

下面的就不再一一列了,这些类文件都写好之后,就可以将表单数据整合成请求的数据了,再通过上一篇的工具转成xml数据,以及使用上一篇的testRequest方法,稍微修改下,下单提交就完成了。

响应数据收到后,我们可以根据xml的数据结构,如上建立对应的类文件,将xml反转成类数据:
SfResponseVo responseVo = (SfResponseVo) SfUtils.xmlToBean(response, SfResponseVo.class);

那么下单的接口就完成了,是不是很简单?这种方式在写前面那些类文件时感觉比较繁琐,但是写完后,后面处理逻辑就非常清晰了。

转载自原文链接, 如需删除请联系管理员。

原文链接:顺丰丰桥接口开发-java(下订单接口),转载请注明来源!

0