實際開發中經常會遇到要和其他平台或系統對接的情況,實際操作就是互相調用別人的接口獲取或者推送數據,
當我們調用別人接口推送數據時,需要對方給一個接口地址以及接口的規范文檔,規范中要包括接口的明確入參及其格式,和接口返回狀態的幾種情況,
調用的后台acion層業務管理層代碼:
/** * 調用XXX市接口推送銀行開戶信息 * ywguid 即為 projectguid * @exception/throws [違例類型] [違例說明] * @see [類、類#方法、類#成員] */ public void pushToSZOpenAcountApplyinfo(String projectguid) { try { YzyhEntityServiceImpl yzyhEntityServiceImpl = new YzyhEntityServiceImpl(); System.out.println("===================引入銀行印章流程得實體service" + yzyhEntityServiceImpl); YzyhEntity yzyhEntity = yzyhEntityServiceImpl.getYzyhEntityByProjectguid(projectguid); //時間格式化 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); if (yzyhEntity != null) { RestfulService restfulservice = new RestfulService(); JSONObject jobparasjson = new JSONObject(); JSONObject jobjparas = new JSONObject(); jobparasjson.put("token", "xxx_WebSerivce_**##0601"); //業務標識 jobjparas.put("ywguid", projectguid); //存款人名稱 jobjparas.put("acctna", StringUtil.isBlank(yzyhEntity.getAcctna()) ? "" : yzyhEntity.getAcctna()); //證明文件種類 if (StringUtil.isNotBlank(yzyhEntity.getIdtftp())) { jobjparas.put("idtftp", yzyhEntity.getIdtftp()); } else { jobjparas.put("idtftp", "M"); } String areacode = ""; //證明文件編號 jobjparas.put("idtfno", StringUtil.isBlank(yzyhEntity.getIdtfno()) ? "" : yzyhEntity.getIdtfno()); //證明文件有效期 jobjparas.put("matudt", StringUtil.isBlank(yzyhEntity.getMatudt()) ? "2099-12-30 00:00:00" : sdf2.format(yzyhEntity.getMatudt())); //地址 // String address = yzyhEntity.get("Ctrl66") + "省(市/區)"; // address += yzyhEntity.get("Ctrl67") + "市(區/盟/州)"; // address += yzyhEntity.get("Ctrl68") + "縣"; // address += yzyhEntity.get("Ctrl69") + "鄉(鎮/街道)"; // address += yzyhEntity.get("Ctrl70") + "村(路)"; // address += yzyhEntity.get("Ctrl71") + "號"; //id有效期 jobjparas.put("lwiddt", StringUtil.isBlank(yzyhEntity.getLwiddt()) ? "2099-12-30 00:00:00" : sdf2.format(yzyhEntity.getLwiddt())); //證件編號 jobjparas.put("lwidno", yzyhEntity.getLwidno()); //基本賬戶開戶許可核准號 jobjparas.put("dtittp", "ACO1"); //代理人證件有效期 jobjparas.put("pxmudt", StringUtil.isBlank(yzyhEntity.getPxmudt()) ? "2099-12-30 00:00:00" : sdf2.format(yzyhEntity.getPxmudt())); //業務代碼 jobjparas.put("qxcode", yzyhEntity.getQxcode()); jobparasjson.put("params", jobjparas); System.out.println("開戶申請參數:" + jobparasjson); //調用市政上報接口 String result = restfulservice.getTaskinfo(jobparasjson.toString()); System.out.println("===============開戶申請信息返回值:" + result); if (StringUtil.isBlank(result)) { System.out.println("=============開戶申請信息推送失敗====================="); } JSONObject jsonresult = (JSONObject) JSONObject.parse(result); String custom = jsonresult.getString("custom"); JSONObject jsoncustom = (JSONObject) JSONObject.parse(custom); String code = jsoncustom.getString("code"); if ("1".equals(code)) { System.out.println("==============開戶申請返回結果:" + jsoncustom.getString("text")); } else { System.out.println("==============開戶申請返回結果:" + jsoncustom.getString("text")); } } } catch (Exception e) { e.printStackTrace(); System.out.print(e.toString()); } }
所調用的所調用的restful接口,包含http模擬請求代碼的service層業務邏輯實施層代碼:
package com.xxx.xxxxx.yzyhentity.action; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.methods.StringRequestEntity; import com.xxx.basic.bizlogic.sysconf.systemparameters.service.FrameConfigService9; /** * 接口請求 * [一句話功能簡述] * [功能詳細描述] * @see [相關類/方法] * @since [產品/模塊版本] */ public class RestfulService { private static String SZRESTFULURL; private static String pushSZzwzxOpenAcountApplyinfo = "szbank/pushSZzwzxOpenAcountApplyinfo";//開戶申請推送市政務服務中心商業銀行 static { SZRESTFULURL = new FrameConfigService9().getFrameConfigValue("蘇州市restful接口地址"); } /** * 開戶申請推送市政務服務中心商業銀行 * [一句話功能簡述] * [功能詳細描述] * @param param ,為調用別人接口的入參 * @return * @exception/throws [違例類型] [違例說明] * @see [類、類#方法、類#成員] */ public String getTaskinfo(String param) { String url = SZRESTFULURL + pushSZzwzxOpenAcountApplyinfo; System.out.println("=============開戶申請信息推送地址:"+url); return sendPost(url, param); } /** * http模擬請求 */ public String sendPost(String url, String param) { try { String result = null; String loginresturl = url; HttpClient httpClient = new HttpClient(); PostMethod post = new PostMethod(loginresturl); HttpMethod method = post; System.out.println("=============開戶申請信息推送地址:"+url); if (param != null) { RequestEntity se = new StringRequestEntity(param, "application/json", "UTF-8"); post.setRequestEntity(se); } try { httpClient.executeMethod(method); String restresponse = method.getResponseBodyAsString(); System.out.println("===================restresponse:" + restresponse); result=restresponse; } catch (Exception e) { e.printStackTrace(); } finally { post.releaseConnection(); } return result; } catch (Exception e) { e.printStackTrace(); return null; } } }