一、對接三方系統
當我們要查看三方系統的信息時,一般會先獲取到三方系統的token,然後讓前端拼token帶上url來訪問三方系統的接口,先不考慮到加密的問題。
比如查看oa系統的po號,需要先讓前端掉一個獲取oa系統的token接口,後端通過使用Http的方式來獲取到token後,返回給前端,前端拿到token後,然後再根據配置的地址來訪問oa系統:
通過http請求的方式來獲取token,oa系統會返回一個對象或者json串給本系統:
public String getOaToken(String employeeCode, Long setOfBooksId) {
OaToken oaToken = new OaToken();
String HOST = organizationService.getParameterValue(null, setOfBooksId, "CUX_FEC_OA_TOKEN_URL");
OaToken client = new OaToken();
JSONObject json = new JSONObject();
json.put("hrid", employeeCode);
String reslut = null;
try {
reslut = oaToken.doPostData(HOST, json.toString());
return reslut;
} catch (Exception e) {
return e.getMessage();
}
}
POST方式的HTTP請求:
public String doPostData(String url, String json) throws Exception {
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
String result = "";
HttpResponse res = null;
try {
StringEntity s = new StringEntity(json.toString(), "UTF-8");
s.setContentType("application/json");
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json; charset=utf-8");
post.setEntity(s);
res = client.execute(post);
if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(res.getEntity());
return result;
}
} catch (Exception e) {
if(res == null) {
return "HttpResponse 爲 null!";
}
throw new RuntimeException(e);
}
if(res == null || res.getStatusLine() == null) {
return "無響應";
}
return result;
}
返回結果:
然後前端就可以拿到token來訪問oa系統。