OpenAPI EAI API
OpenAPI |
第三方系统部署在外网(互联网)与U8对接的场景。 限制:做不了上下游关联生单,比如采购入库单无法关联采购到货单;不支持事务。 优势:安全、接口定义面向消费者,使用相对最简单 数据标准:json 协议:https 安全性:接口调用需授权,企业对接口访问有完全控制权。 |
EAI |
第三方系统部署在内网,与U8服务器可以直接连接。 限制:做不了上下游关联生单,比如采购入库单无法关联采购到货单;不支持事务。 优势:使用复杂度在openapi与api之间 数据标准:xml 协议:http 安全性:内网系统间对接安全性要求通常比较低 |
API |
第三方系统部署在内网,与U8服务器可以直接连接。 限制:开发的应用需要部署在装有U8的电脑上。 优势:可做上下游关联生单,性能最好,支持事务。 数据标准:开放语言中的对象类型 协议:无,直接dll引入调用 安全性:内网系统间对接安全性要求通常比较低
|
为什么API调用都需要传入token参数?
安全性考虑,防止第三方截获url。
token有2小时生命期的限制,保证开发者请求的url即使被第三方截获也只能最多使用两个小时
token管理策略:
注意:token本身有2小时生命期、且两小时内只能被调用2000次!
因此,强烈不建议每次调用业务API时,比如customer/get,都重新获取token,而是应该通过调用具体API,比如customer/get,返回的 errcode 值是否为30012(token已过期)判断是否需要重取
token获取api:sytem/token
http://open.yonyouup.com/apiCenter/token_get
本地COM接口
类库:U8Distribute.DLL
ProgID:U8Distribute.iDistribute
方法:String Process(String RequestXml)
参数:数据交换请求消息,详见数据交换格式定义。
返回:数据交换响应消息,详见数据交换格式定义。
远程HTTP接口
EAI远程数据交换采用Http POST的方式。
访问网址: http://U8应用服务器IP或机器名/U8EAI/import.asp
POST上传:数据交换请求消息与本地调用一样。
Response接收:数据交换响应消息与本地调用一样。
接口定义
本地COM接口
类库:U8Distribute.DLL
ProgID:U8Distribute.iDistribute
方法:String Process(String RequestXml)
参数:数据交换请求消息,详见数据交换格式定义。
返回:数据交换响应消息,详见数据交换格式定义。
远程HTTP接口
EAI远程数据交换采用Http POST的方式。
访问网址: http://U8应用服务器IP或机器名/U8EAI/import.asp
POST上传:数据交换请求消息与本地调用一样。
Response接收:数据交换响应消息与本地调用一样。
本地COM调用
JAVA代码:
采用JNI、JCOM、JACOB技术调用EAI服务代理COM组件,下面以JACOB为例:
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
class Test
{
public static void main(String[] args)
{
//创建EAI服务代理接口对象
Dispatch eaiBroker = new Dispatch("U8Distribute.iDistribute");
//调用EAI服务代理的数据交换方法Process,传入Request交换消息, 并获取EAI
//返回的Response消息。
String responseXml =
Dispatch.call(eaiBroker, "Process", new Variant(requestXml));
...... //处理返回结果
}
}
Http远程调用
JAVA代码:
class Test
{
public static void main(String[] args)
{
URL url = new URL(“http://u8appsrv/u8eai/import.asp”);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setConnectTimeout(3000000);
con.setReadTimeout(3000000);
con.setDoInput(true);
con.setDoOutput(true);
con.setAllowUserInteraction(false);
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Content-type","application/x-www-form-urlencoded");
//发送Request消息
OutputStream out = con.getOutputStream();
DataOutputStream dos = new DataOutputStream(this.out);
dos.write(requestXml.getBytes("UTF-8"));
//获取Response消息
InputStream in = con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String s = null;
while ((s = br.readLine()) != null) {
sb.append(s);
}
String responseXml = sb.toString();
}
}