下订单接口,提交的数据如下:
<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(下订单接口),转载请注明来源!