怎么说呢,用友U8的OpenAPI从调用方面来说比U8本身的API方便很多,更适合新接触U8二开的人上手,但是同样U8这款软件的运行效率问题也很严重,OpenAPi的调用方式是先访问U8的OpenAPI网站,然后网站根据appkey和调用方id进行一次转发,所以说OpenAPI不适合数据流量大的二次开发。
为什么要写这篇博文,是因为当时在网上找OpenAPi的资料并没有找到,所以想了想写了一篇这个博文。
第使用OpenAPI的话,二开系统的账号登陆就不用指望去使用Session存了(反正本人是折腾了半天都没成功,貌似原因是http管道通讯变了。),本人的二开系统使用cookie存放账号信息。
接下来进入正题:
调用OpenAPI的准备:
一.在用友开放平台注册账号。
二.申请成为开发者。
三.下载OpenAPI客户端。
四.申请测试账号。
五.U8开放平台配置应用需要调用的接口。
六.配置OpenAPI客户端。
完成准备后就可以开始项目的搭建了。
我这里就放置一个获取U8token的代码吧。
- public NewsModel getToken(U8APIModel _u8api)
- {
- try
- {
- string API = @"system/token";
- string parameter = "from_account=" + _u8api.From_Account + "&app_key=" + _u8api.App_Key + "&app_secret=" + _u8api.App_Secret;
- string json = HttpGet(API, parameter);
- JObject jo = (JObject)JsonConvert.DeserializeObject(json);
- JObject obj = JObject.Parse(json);
- var data = obj["token"];
- if (State(json))
- {
- NewsModel nw = new NewsModel
- {
- State = true
- };
- nw.News = data["id"].ToString();
- return nw;
- }
- string n = jo["errmsg"].ToString();
- NewsModel nm = new NewsModel
- {
- State = false,
- News = n
- };
- return nm;
- }
- catch (Exception ex)
- {
- return new NewsModel
- {
- State = false,
- News = ex.ToString()
- };
- }
- }
gettoken方法是get形式的所以直接放松就可以了,但是需要注意的是OpenAPI的post形式接口是需要json形式的参数的。