logo
接口模式详解、开发人员注意事项、接口定义说明
接口模式详解 数据接口一 数据接口二 接口在线测试
以下是开发人员需要注意的事项:
接口的测试环境地址、测试货主、测试仓库
接口地址:http://175.102.15.139/TTX_InterFace/HttpListener.aspx
测试货主:TEST,测试仓库:TEST001
接口数据发送和数据回传都是采用http(超文本传输协议),POST方法请求模式
HTTP协议传输的优势:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
接口双方在进行数据发送和消息的回执时都统一使用UTF-8编码格式
UTF-8编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。相对GBK和GB2312来说,UTF-8节省空间,通用性强。
目前接口双方在进行数据交互时都采用扩展标记语言 (XML)
目前采用XML,主要表现在几个方便:
编写技术简单、可读行强、使用的范围量大。
HTTP请求TTX接口时HEAD包含两个参数,参数名为:Subject、Message-From
1:Message-From:表示数据来源,如:TAOBAO,此参数根据上位平台的不同,由澳门威尼斯9778网站技术人员进行编写定义,需求方可向澳门威尼斯9778网站技术人员索要。
2:Subject:表示要请求的接口类型参数,标准接口包含的接口以及参数值有:
①、入库单同步接口(ReceiptRequest)
②、出库单同步接口(ShipmentRequest)
③、获取入库单回传信息接口(GetReceipts)
④、获取发货信息回传接口(GetShipments)
接口双方信息回执的XML定义
(1)成功:<Response><Success>true</Success><Code>100</Code><Description>单据接受成功</Description></Response>
(2)失败:<Response><Success>false</Success><Code>200</Code><Description>失败原因</Description></Response>
Success节点表示是否单据处理成功,用true和false来表示,此节点可以用于双方系统的逻辑处理。Code节点表示信息的描述编码,双方系统自行定义。Description节点表示单据处理成功或则失败的详细信息描述,特别是失败的情况下得告诉对方系统是什么原因引起的,错误原因一定得详细。
TTX接口在接收到的XML中不能包含一些特殊字符
XML文档中如果文本字符中包含了一些特殊的字符,例如<、&、>、'、""、emioy表情等等,这些字符会引起XML文档的混乱。双方开发接口时都特别注意一下,一些货品名称、收货人地址、收货人姓名等节点下最容易出现特殊字符,双方都过滤一下。
接口在单据交互时请求量的对应及传输异常处理说明
产品同步接口可以一对多,其他接口都是一对一的关系,即请求一次对应一张单据,目的是加快单笔订单传输速度,提高传输异常订单的可控性。双方在数据交互时难免会遇到不可抗拒的因数,如:网络延时异常等情况,所以双方都要保证接口方便有重发机制,目前TTX接口层默认设定为4次重试(5分钟一次),如果4次传输失败接口将不会在重发,转为人工干预。
TTX接口单方面接受请求的处理机制说明
TTX接收到对方系统的数据指令请求后,不会对请求的数据和XML节点进行任何的判断和逻辑处理,而是直接保存到消息队列中排队等候后反馈对方接受成功,然后接口逻辑层再对等候的消息进行异步处理(验证XML节点的正确性和数据的有效性),从而大大的提高了接单效率。
请求出库接口API代码C#示例(根据不同的开发语言,仅供参考)
Encoding myEncoding = Encoding.GetEncoding("UTF-8");
byte[] requestBytes = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(发送的XML);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://175.102.15.139/TTX_InterFace/HttpListener.aspx ");
req.Headers["Message-From"] = “TAOBAO”;
req.Headers["Subject"] = “ItemRequest”;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), myEncoding);
string backstr = sr.ReadToEnd();
sr.Close();
res.Close();
请求回传接口参数代码C#示例(根据不同的开发语言,仅供参考)
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.Headers["Message-From"] = "TTX";
req.Headers["Subject"] = "GetShipments";//接口类型
req.Headers["CustomerID"] = 货主编码;
req.Headers["WareHouse"] = 仓库编码;
req.Headers["ID"] =要回传的订单号;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), myEncoding);
String stRequest = sr.ReadToEnd();
                
>