<%@ page import="com.alibaba.fastjson.JSONObject" %> <%@ page import="weaver.conn.RecordSet" %> <%@ page import="weaver.general.Util" %> <%@ page import="weaver.general.BaseBean" %> <%@ page import="weaver.general.MD5" %> <%@ page import="org.apache.http.client.methods.HttpRequestBase" %> <%@ page import="org.apache.commons.collections.MapUtils" %> <%@ page import="java.io.IOException" %> <%@ page import="org.apache.http.client.methods.HttpPost" %> <%@ page import="org.apache.http.entity.StringEntity" %> <%@ page import="org.apache.http.Consts" %> <%@ page import="org.apache.http.impl.client.CloseableHttpClient" %> <%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %> <%@ page import="org.apache.http.HttpEntity" %> <%@ page import="org.apache.http.util.EntityUtils" %> <%@ page import="org.apache.http.StatusLine" %> <%@ page import="javax.net.ssl.SSLContext" %> <%@ page import="org.apache.http.conn.socket.ConnectionSocketFactory" %> <%@ page import="org.apache.http.config.Registry" %> <%@ page import="org.apache.http.config.RegistryBuilder" %> <%@ page import="org.apache.http.conn.socket.PlainConnectionSocketFactory" %> <%@ page import="org.apache.http.conn.ssl.SSLConnectionSocketFactory" %> <%@ page import="org.apache.http.conn.ssl.NoopHostnameVerifier" %> <%@ page import="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" %> <%@ page import="org.apache.http.impl.client.HttpClients" %> <%@ page import="java.security.NoSuchAlgorithmException" %> <%@ page import="java.security.KeyManagementException" %> <%@ page import="javax.net.ssl.X509TrustManager" %> <%@ page import="java.security.cert.CertificateException" %> <%@ page import="javax.net.ssl.TrustManager" %> <%@ page import="org.apache.commons.lang3.StringUtils" %> <%@ page import="java.util.*" %> <%@ page import="com.alibaba.fastjson.JSON" %> <%@ page contentType="text/html;charset=UTF-8" %> <% BaseBean bb = new BaseBean(); String id = request.getParameter("id"); String path = "/v2.0/department"; String url = "http://v2-api.delicloud.com"+path; try { String where = ""; if(StringUtils.isNotBlank(id)){ where = " and id in("+id+")" ; } String key = bb.getPropValue("deliCloud","key"); String secret = bb.getPropValue("deliCloud","secret"); out.print("key:"+key+"
"); out.print("secret:"+secret+"
"); if(StringUtils.isNotBlank(key) && StringUtils.isNotBlank(secret)){ String sjc = String.valueOf(Calendar.getInstance().getTimeInMillis()); String appSig = getAppSigData(path,key,secret,sjc); out.print("sjc:"+sjc+"
"); out.print("appSig:"+appSig+"
"); Map heads = new HashMap(); heads.put("App-Key", key); heads.put("App-Timestamp", sjc); heads.put("App-Sig", appSig); heads.put("Api-Module", "CHECKIN"); heads.put("Api-Cmd", "checkin_query"); List> topSubcompanyList = getTopSubcompanyList(where); for(int i=0;i topSubcompanyMap = topSubcompanyList.get(i); String subcompanycode = topSubcompanyMap.get("subcompanycode"); String subcompanyname = topSubcompanyMap.get("subcompanyname"); Map dataMap = new HashMap(); dataMap.put("department_ext_id", subcompanycode); dataMap.put("name", subcompanyname); dataMap.put("p_ext_id", ""); out.print("headers:"+JSONObject.toJSONString(heads)+"
"); out.print("top-subcompany-body:"+JSONObject.toJSONString(dataMap)+"
"); String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap)); bb.writeLog("response:" + back); out.print("response:"+back+"
"); JSONObject backObj = JSONObject.parseObject(back); String code = backObj.getString("code"); String data = backObj.getString("data"); out.print("code:"+code+"
"); if ("0".equals(code)) { bb.writeLog("新接口调用成功"); JSONObject dataObj = JSONObject.parseObject(data); out.print("dataObj:"+dataObj.toJSONString()+"
"); } else { bb.writeLog("接口调用失败"); out.print("接口调用失败"); } } for(int i=0;i topSubcompanyMap = topSubcompanyList.get(i); String subcompanyid = topSubcompanyMap.get("subcompanyid"); List> childSubcompanyList = getSubcompanyListByParentid(subcompanyid); for(int k=0;k childSubcompanyMap = childSubcompanyList.get(k); String subcompanycode = childSubcompanyMap.get("subcompanycode"); String subcompanyname = childSubcompanyMap.get("subcompanyname"); String supsubcompanycode = childSubcompanyMap.get("supsubcompanycode"); Map dataMap = new HashMap(); dataMap.put("department_ext_id", subcompanycode); dataMap.put("name", subcompanyname); dataMap.put("p_ext_id", supsubcompanycode); out.print("headers:"+JSONObject.toJSONString(heads)+"
"); out.print("Subcompany-body:"+JSONObject.toJSONString(dataMap)+"
"); String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap)); bb.writeLog("response:" + back); out.print("response:"+back+"
"); JSONObject backObj = JSONObject.parseObject(back); String code = backObj.getString("code"); String data = backObj.getString("data"); out.print("code:"+code+"
"); if ("0".equals(code)) { bb.writeLog("新接口调用成功"); JSONObject dataObj = JSONObject.parseObject(data); out.print("dataObj:"+dataObj.toJSONString()+"
"); } else { bb.writeLog("接口调用失败"); out.print("接口调用失败"); } } } // List> topDepartmentList = getTopDeptList(); // for(int i=0;i topDepartmentMap = topDepartmentList.get(i); // String departmentcode = topDepartmentMap.get("departmentcode"); // String departmentname = topDepartmentMap.get("departmentname"); // String subcompanycode = topDepartmentMap.get("subcompanycode"); // // Map dataMap = new HashMap(); // dataMap.put("department_ext_id", departmentcode); // dataMap.put("name", departmentname); // dataMap.put("p_ext_id", subcompanycode); // // out.print("headers:"+JSONObject.toJSONString(heads)+"
"); // out.print("top-dept-body:"+JSONObject.toJSONString(dataMap)+"
"); // // String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap)); // bb.writeLog("response:" + back); // out.print("response:"+back+"
"); // JSONObject backObj = JSONObject.parseObject(back); // String code = backObj.getString("code"); // String data = backObj.getString("data"); // out.print("code:"+code+"
"); // if ("0".equals(code)) { // bb.writeLog("新接口调用成功"); // JSONObject dataObj = JSONObject.parseObject(data); // out.print("dataObj:"+dataObj.toJSONString()+"
"); // } else { // bb.writeLog("接口调用失败"); // out.print("接口调用失败"); // } // } // // for(int i=0;i topDeptMap = topDepartmentList.get(i); // String deptid = topDeptMap.get("deptid"); // // List> childDepartmentList = getDeptListByParentid(deptid); // for(int k=0;k childDepartmentMap = childDepartmentList.get(i); // String departmentcode = childDepartmentMap.get("departmentcode"); // String departmentname = childDepartmentMap.get("departmentname"); // String supdeptcode = childDepartmentMap.get("supdeptcode"); // // Map dataMap = new HashMap(); // dataMap.put("department_ext_id", departmentcode); // dataMap.put("name", departmentname); // dataMap.put("p_ext_id", supdeptcode); // // out.print("headers:"+JSONObject.toJSONString(heads)+"
"); // out.print("dept-body:"+JSONObject.toJSONString(dataMap)+"
"); // // String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap)); // bb.writeLog("response:" + back); // out.print("response:"+back+"
"); // JSONObject backObj = JSONObject.parseObject(back); // String code = backObj.getString("code"); // String data = backObj.getString("data"); // out.print("code:"+code+"
"); // if ("0".equals(code)) { // bb.writeLog("新接口调用成功"); // JSONObject dataObj = JSONObject.parseObject(data); // out.print("dataObj:"+dataObj.toJSONString()+"
"); // } else { // bb.writeLog("接口调用失败"); // out.print("接口调用失败"); // } // } // } } } catch (Exception e) { bb.writeLog("数据异常!"); bb.writeLog(e.getMessage()); } %> <%! /*** * * @return */ public List> getTopSubcompanyList(String where){ List> list = new ArrayList>(); Map map = null; RecordSet rs = new RecordSet(); String sql =" select id,subcompanycode,subcompanyname,subcompanydesc \n" + " from HrmSubCompany where supsubcomid = 0 \n" + where + " and (canceled is null or canceled = 0)" ; rs.executeQuery(sql); while (rs.next()){ String subcompanycode = rs.getString("subcompanycode"); String subcompanyname = rs.getString("subcompanyname"); String subcompanyid = rs.getString("id"); map = new HashMap(); map.put("subcompanyid",subcompanyid); map.put("subcompanycode",subcompanycode); map.put("subcompanyname",subcompanyname); list.add(map); } return list; } public List> getSubcompanyListByParentid(String supsubcomid){ List> list = new ArrayList>(); Map map = null; RecordSet rs = new RecordSet(); String sql =" with tem_table(id,subcompanyname,supsubcomid,subcompanycode,curlevel) as (\n" + " select id,subcompanyname,supsubcomid,1 as level \n" + " from HrmSubCompany where id = " + supsubcomid + " union all\n" + " select a.id,a.subcompanyname,a.supsubcomid,subcompanycode,b.curlevel+1\n" + " from HrmSubCompany a \n" + " inner join tem_table b on (a.supsubcomid = b.id)\n" + " )\n" + " select l.*,k.subcompanycode as supsubcompanycode from tem_table l " + " left join HrmSubCompany k on l.supsubcomid = k.id where id <> "+supsubcomid ; rs.executeQuery(sql); while (rs.next()){ String subcompanycode = rs.getString("subcompanycode"); String subcompanyname = rs.getString("subcompanyname"); String sup_subcomid = rs.getString("supsubcomid"); String supsubcompanycode = rs.getString("supsubcompanycode"); map = new HashMap(); map.put("subcompanycode",subcompanycode); map.put("subcompanyname",subcompanyname); map.put("supsubcomid",sup_subcomid); map.put("supsubcompanycode",supsubcompanycode); list.add(map); } return list; } public List> getTopDeptList(){ List> list = new ArrayList>(); Map map = null; RecordSet rs = new RecordSet(); String sql =" select t.id,t.departmentcode,t.departmentname,t.subcompanyid1,h.subcompanycode\n" + " from HrmDepartment t\n" + " left join HrmSubCompany h on h.id = t.subcompanyid1\n" + " where t.supdepid = 0" ; rs.executeQuery(sql); while (rs.next()){ String departmentcode = rs.getString("departmentcode"); String departmentname = rs.getString("departmentname"); String deptid = rs.getString("id"); String subcompanycode = rs.getString("subcompanycode"); map = new HashMap(); map.put("departmentcode",departmentcode); map.put("departmentname",departmentname); map.put("deptid",deptid); map.put("subcompanycode",subcompanycode); list.add(map); } return list; } public List> getDeptListByParentid(String supsubcomid){ List> list = new ArrayList>(); Map map = null; RecordSet rs = new RecordSet(); String sql =" with tem_table(id,departmentname,supdepid,departmentcode,curlevel) as(\n" + " select id,departmentname,supdepid,departmentcode,1 as level \n" + " from HrmDepartment where id =" + supsubcomid + " union all\n" + " select a.id,a.departmentname,a.supdepid,a.departmentcode,b.curlevel+1 \n" + " from HrmDepartment a \n" + " inner join tem_table b on (a.supdepid = b.id) \n" + " )\n" + " select p.*,k.departmentcode as supdeptcode from tem_table p\n" + " left join HrmDepartment k on p.supdepid = k.id where id <> "+supsubcomid ; rs.executeQuery(sql); while (rs.next()){ String departmentcode = rs.getString("departmentcode"); String departmentname = rs.getString("departmentname"); String sup_depid = rs.getString("supdepid"); String supdeptcode = rs.getString("supdeptcode"); map = new HashMap(); map.put("departmentcode",departmentcode); map.put("departmentname",departmentname); map.put("supdepid",sup_depid); map.put("supdeptcode",supdeptcode); list.add(map); } return list; } /*** * * @param path * @param key * @param sercet * @param sjc * @return */ public String getAppSigData(String path,String key,String sercet,String sjc){ String appSig = ""; BaseBean bb = new BaseBean(); try{ MD5 md5 = new MD5(); String all = path + sjc + key + sercet; String sig = md5.getMD5ofStr(all); bb.writeLog("sig:" + sig); Scanner sc = new Scanner(md5.getMD5ofStr(all)); String str = sc.next(); char[] arrays = str.toCharArray(); for (int i = 0; i < arrays.length; i++) { char c1 = arrays[i]; if (c1 >= 65 && c1 <= 90) { char c2 = toLowerCase(c1);//如果输入是大写 ,则调用toLowerCase方法 appSig = appSig + c2; } else { appSig = appSig + c1; } } bb.writeLog("appSig:" + appSig); }catch (Exception e){ } return appSig; } /*** * * @param c1 * @return */ public static char toLowerCase(char c1){ int a = (int) c1;//将接收到的小写字符c1转换成int类型的数据给a int b =a+32; //a+32得出大写写对应小写的ascll数值 char bb = (char)b;//最后将b转换成char类型字符给bb return bb; //返回bb;就是返回字母小写的字符 } private static void prepareHeaders(HttpRequestBase httpRequest, Map headers) { if (!MapUtils.isEmpty(headers)) { for (Map.Entry entry : headers.entrySet()) { httpRequest.addHeader(entry.getKey(), entry.getValue()); } } } public static String doPostJsonRequest(String url, Map headers, String jsonStr) throws IOException { HttpPost httpost = new HttpPost(url); prepareHeaders(httpost, headers); StringEntity entity = new StringEntity(jsonStr, Consts.UTF_8); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httpost.setEntity(entity); return sendRequest(httpost); } private static String sendRequest(HttpRequestBase httpRequest) throws IOException { String result = null; CloseableHttpClient httpclient = creteClient(); try (CloseableHttpResponse resp = httpclient.execute(httpRequest)) { HttpEntity entity = resp.getEntity(); result = (entity == null ? null : EntityUtils.toString(entity, Consts.UTF_8)); StatusLine statusLine = resp.getStatusLine(); if (statusLine.getStatusCode() >= 300) { EntityUtils.consume(entity); // String errorMsg = Strings.lenientFormat("Http status abnormal-status code is %s, response is %s", resp.getStatusLine().getStatusCode(), result); } } return result; } public static CloseableHttpClient creteClient() { //采用绕过验证的方式处理https请求 try { SSLContext sslcontext = createIgnoreVerifySSL(); // 设置协议http和https对应的处理socket链接工厂的对象 Registry socketFactoryRegistry = RegistryBuilder.create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE)) .build(); PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); HttpClients.custom().setConnectionManager(connManager); //创建自定义的httpclient对象 CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build(); return client; } catch (Exception e) { return null; } } /** * 绕过验证 * * @return * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sc = SSLContext.getInstance("SSLv3"); // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法 X509TrustManager trustManager = new X509TrustManager() { @Override public void checkClientTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } }; sc.init(null, new TrustManager[]{trustManager}, null); return sc; } %>