K/3 Cloud Web API集成开发Java完整示例【分享】
金蝶云社区-天冥异
天冥异
11人赞赏了该文章 6659次浏览 未经作者许可,禁止转载编辑于2018年07月19日 20:31:44

先上图:
Web API 【销售订单】保存完整示例分享。
WebAPIJava.jpg 
Save 新增修改
View 查看
Submit 提交
Audit 审核
UnAudit 反审核
StatusConvert 状态转换

核心调用代码类:

  1. import java.io.BufferedReader;

  2. import java.io.DataOutputStream;

  3. import java.io.InputStreamReader;

  4. import java.net.HttpURLConnection;

  5. import java.net.URL;

  6. import java.util.Date;

  7. import java.util.HashMap;

  8. import java.util.Map;

  9. import java.util.UUID;


  10. import org.json.JSONArray;

  11. import org.json.JSONObject;


  12. public class InvokeHelper {


  13.         // K3 Cloud WebSite URL Example "http://192.168.19.113/K3Cloud/"

  14.         public static String POST_K3CloudURL = "http://192.168.19.113/K3Cloud/";


  15.         // Cookie 值

  16.         private static String CookieVal = null;


  17.         private static Map map = new HashMap();

  18.         static {

  19.                 map.put("Save",

  20.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc");

  21.                 map.put("View",

  22.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc");

  23.                 map.put("Submit",

  24.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc");

  25.                 map.put("Audit",

  26.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc");

  27.                 map.put("UnAudit",

  28.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.UnAudit.common.kdsvc");

  29.                 map.put("StatusConvert",

  30.                                 "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.StatusConvert.common.kdsvc");

  31.         }


  32.         // HttpURLConnection

  33.         private static HttpURLConnection initUrlConn(String url, JSONArray paras)

  34.                         throws Exception {

  35.                 URL postUrl = new URL(POST_K3CloudURL.concat(url));

  36.                 HttpURLConnection connection = (HttpURLConnection) postUrl

  37.                                 .openConnection();

  38.                 if (CookieVal != null) {

  39.                         connection.setRequestProperty("Cookie", CookieVal);

  40.                 }

  41.                 if (!connection.getDoOutput()) {

  42.                         connection.setDoOutput(true);

  43.                 }

  44.                 connection.setRequestMethod("POST");

  45.                 connection.setUseCaches(false);

  46.                 connection.setInstanceFollowRedirects(true);

  47.                 connection.setRequestProperty("Content-Type", "application/json");

  48.                 DataOutputStream out = new DataOutputStream(

  49.                                 connection.getOutputStream());


  50.                 UUID uuid = UUID.randomUUID();

  51.                 int hashCode = uuid.toString().hashCode();


  52.                 JSONObject jObj = new JSONObject();


  53.                 jObj.put("format", 1);

  54.                 jObj.put("useragent", "ApiClient");

  55.                 jObj.put("rid", hashCode);

  56.                 jObj.put("parameters", chinaToUnicode(paras.toString()));

  57.                 jObj.put("timestamp", new Date().toString());

  58.                 jObj.put("v", "1.0");


  59.                 out.writeBytes(jObj.toString());

  60.                 out.flush();

  61.                 out.close();


  62.                 return connection;

  63.         }


  64.         // Login

  65.         public static boolean Login(String dbId, String user, String pwd, int lang)

  66.                         throws Exception {


  67.                 boolean bResult = false;


  68.                 String sUrl = "Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";


  69.                 JSONArray jParas = new JSONArray();

  70.                 jParas.put(dbId);// 帐套Id

  71.                 jParas.put(user);// 用户名

  72.                 jParas.put(pwd);// 密码

  73.                 jParas.put(lang);// 语言


  74.                 HttpURLConnection connection = initUrlConn(sUrl, jParas);

  75.                 // 获取Cookie

  76.                 String key = null;

  77.                 for (int i = 1; (key = connection.getHeaderFieldKey(i)) != null; i++) {

  78.                         if (key.equalsIgnoreCase("Set-Cookie")) {

  79.                                 String tempCookieVal = connection.getHeaderField(i);

  80.                                 if (tempCookieVal.startsWith("kdservice-sessionid")) {

  81.                                         CookieVal = tempCookieVal;

  82.                                         break;

  83.                                 }

  84.                         }

  85.                 }


  86.                 BufferedReader reader = new BufferedReader(new InputStreamReader(

  87.                                 connection.getInputStream()));

  88.                 String line;

  89.                 System.out.println(" ============================= ");

  90.                 System.out.println(" Contents of post request ");

  91.                 System.out.println(" ============================= ");

  92.                 while ((line = reader.readLine()) != null) {

  93.                         String sResult = new String(line.getBytes(), "utf-8");

  94.                         System.out.println(sResult);

  95.                         bResult = line.contains(""LoginResultType":1");

  96.                 }

  97.                 System.out.println(" ============================= ");

  98.                 System.out.println(" Contents of post request ends ");

  99.                 System.out.println(" ============================= ");

  100.                 reader.close();


  101.                 connection.disconnect();


  102.                 return bResult;

  103.         }


  104.         // Save

  105.         public static void Save(String formId, String content) throws Exception {

  106.                 Invoke("Save", formId, content);

  107.         }


  108.         // View

  109.         public static void View(String formId, String content) throws Exception {

  110.                 Invoke("View", formId, content);

  111.         }


  112.         // Submit

  113.         public static void Submit(String formId, String content) throws Exception {

  114.                 Invoke("Submit", formId, content);

  115.         }


  116.         // Audit

  117.         public static void Audit(String formId, String content) throws Exception {

  118.                 Invoke("Audit", formId, content);

  119.         }


  120.         // UnAudit

  121.         public static void UnAudit(String formId, String content) throws Exception {

  122.                 Invoke("UnAudit", formId, content);

  123.         }


  124.         // StatusConvert

  125.         public static void StatusConvert(String formId, String content)

  126.                         throws Exception {

  127.                 Invoke("StatusConvert", formId, content);

  128.         }


  129.         private static void Invoke(String deal, String formId, String content)

  130.                         throws Exception {


  131.                 String sUrl = map.get(deal).toString();

  132.                 JSONArray jParas = new JSONArray();

  133.                 jParas.put(formId);

  134.                 jParas.put(content);


  135.                 HttpURLConnection connectionInvoke = initUrlConn(sUrl, jParas);


  136.                 BufferedReader reader = new BufferedReader(new InputStreamReader(

  137.                                 connectionInvoke.getInputStream()));


  138.                 String line;

  139.                 System.out.println(" ============================= ");

  140.                 System.out.println(" Contents of post request ");

  141.                 System.out.println(" ============================= ");

  142.                 while ((line = reader.readLine()) != null) {

  143.                         String sResult = new String(line.getBytes(), "utf-8");

  144.                         System.out.println(sResult);

  145.                 }

  146.                 System.out.println(" ============================= ");

  147.                 System.out.println(" Contents of post request ends ");

  148.                 System.out.println(" ============================= ");

  149.                 reader.close();


  150.                 connectionInvoke.disconnect();

  151.         }


  152.         /**

  153.          * 把中文转成Unicode码

  154.          * 

  155.          * @param str

  156.          * @return

  157.          */

  158.         public static String chinaToUnicode(String str) {

  159.                 String result = "";

  160.                 for (int i = 0; i < str.length(); i++) {

  161.                         int chr1 = (char) str.charAt(i);

  162.                         if (chr1 >= 19968 && chr1 <= 171941) {// 汉字范围 \u4e00-\u9fa5 (中文)

  163.                                 result += "\\u" + Integer.toHexString(chr1);

  164.                         } else {

  165.                                 result += str.charAt(i);

  166.                         }

  167.                 }

  168.                 return result;

  169.         }

  170. }


复制代码



Main测试类:

  1. public class InvokeTest {


  2.         public static void main(String[] args) throws Exception {

  3.                 InvokeHelper.POST_K3CloudURL = "http://192.168.19.113/K3Cloud/";

  4.                 String dbId = "55bb19192ebcde";

  5.                 String uid = "Demo";

  6.                 String pwd = "888888";

  7.                 int lang = 2052;

  8.                 

  9.                 if (InvokeHelper.Login(dbId, uid, pwd, lang)) {


  10.                         // 销售订单保存测试

  11.                         // 业务对象Id

  12.                         String sFormId = "SAL_SaleOrder";

  13.                         //需要保存的数据

  14.                         // 如下字段可能需要根据自己实际值做修改

  15.                         // FCustId FSalerId FMaterialId FUnitID

  16.                         String sContent = "{"Creator":"String","NeedUpDateFields":["FBillTypeID","FDate","FBusinessType","FSaleOrgId","FCustId","FSettleCurrId","FSalerId","SAL_SaleOrder__FSaleOrderEntry","FMaterialId","FSettleOrgIds","FUnitID","FQty","SAL_SaleOrder__FSaleOrderFinance","FSettleCurrId","FLocalCurrId","FIsIncludedTax","FBillTaxAmount","FBillAmount","FBillAllAmount","FExchangeTypeId","FExchangeRate"],"Model":{"FID":0,"FBillTypeID":{"FNumber":"XSDD01_SYS"},"FBusinessType":"NORMAL","FSaleOrgId":{"FNUMBER":"100"},"FCustId":{"FNUMBER":"CUST0001"},"FSettleCurrId":{"FNUMBER":"PRE001"},"FSalerId":{"FNUMBER":"0002"},"SAL_SaleOrder__FSaleOrderFinance":{"FExchangeRate":6.8123},"SAL_SaleOrder__FSaleOrderEntry":[{"FMaterialId":{"FNUMBER":"001"},"FSettleOrgIds":{"FNUMBER":"100"},"FUnitID":{"FNumber":"个"},"FQty":10}]}}";

  17.                         InvokeHelper.Save(sFormId, sContent);


  18.                         System.out.println("hola success");

  19.                 }

  20.         }

  21. }


复制代码



赞 11