java實現(xiàn)一個接口調(diào)取另一個接口(接口一調(diào)取接口二)
更新時間:2021年09月02日 09:37:34 作者:qq_33931552
這篇文章主要介紹了java實現(xiàn)一個接口調(diào)取另一個接口(接口一調(diào)取接口二),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
java一個接口調(diào)取另一個接口
工具類
package com.utils; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import org.apache.log4j.Logger; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.userbackend.controller.UserInfoController; import com.userbackend.model.User; //調(diào)取接口方法 public class ToInterface { /** * 調(diào)測日志記錄器。 */ private static final Logger DEBUGGER = Logger.getLogger(UserInfoController.class); /** * 調(diào)用對方接口方法 * * @param path * 對方或第三方提供的路徑 * @param data * 向?qū)Ψ交虻谌桨l(fā)送的數(shù)據(jù),大多數(shù)情況下給對方發(fā)送JSON數(shù)據(jù)讓對方解析 * @param requestMethod * 請求方式 * */ public static StringBuffer interfaceUtil(String path, Object data, String requestMethod) { StringBuffer sb = new StringBuffer(); DEBUGGER.info("請求數(shù)據(jù):" + data); try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 打開和url之間的連接 PrintWriter out = null; conn.setRequestMethod(requestMethod); // 請求方式 // 設置通用的請求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); //設置傳到另一個接口的格式為json conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); // 設置是否向httpUrlConnection輸出,設置是否從httpUrlConnection讀入,此外發(fā)送post請求必須設置這兩個 // 最常用的Http請求無非是get和post,get請求可以獲取靜態(tài)頁面,也可以把參數(shù)放在URL字串后面,傳遞給servlet, // post與get的 不同之處在于post的參數(shù)不是放在URL字串里面,而是放在http請求的正文內(nèi)。 conn.setDoOutput(true); conn.setDoInput(true); // allowUserInteraction 如果為 true,則在允許用戶交互(例如彈出一個驗證對話框)的上下文中對此 URL 進行檢查。 conn.setAllowUserInteraction(false); // 獲取URLConnection對象對應的輸出流 out = new PrintWriter(conn.getOutputStream()); // 發(fā)送請求參數(shù)即數(shù)據(jù) out.print(data); // 緩沖數(shù)據(jù) out.flush(); out.close(); // 獲取URLConnection對象對應的輸入流 InputStream is = conn.getInputStream(); // 構(gòu)造一個字符流緩存 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null) { sb.append(str); } // 關閉流 is.close(); // 斷開連接,最好寫上,disconnect是在底層tcp socket鏈接空閑時才切斷。如果正在被其他線程使用就不切斷。 // 固定多線程的話,如果不disconnect,鏈接會增多,直到收發(fā)不出信息。寫上disconnect后正常一些。 conn.disconnect(); // System.out.println("完整結(jié)束"); DEBUGGER.info("調(diào)用app后臺接口完整結(jié)束"); } catch (Exception e) { e.printStackTrace(); } return sb; } }
springboot中使用(接口一)
@RequestMapping(value = "/get_all_user", method = RequestMethod.POST) @ResponseBody public String get_all_user(HttpServletRequest request, HttpServletResponse response, Model model, AdminTbl admintabl,User user) { JSONObject result = new JSONObject(); String[] args = { "admin_id"}; // 判斷傳來的數(shù)據(jù)是否為空 JSONObject nullcheck = ParamterNullCheck.getInstance().checkNull(admintabl, args); JSONObject param = null; param = (JSONObject) JSON.toJSON(user); DEBUGGER.info(param.toJSONString()); if (nullcheck == null ) { // 查詢該 用戶是否有該權限 admintabl.setUrl("/userInfo/get_all_user"); RolePermissionTbl rpt = permissionService.get_permission(admintabl); if (rpt != null) { //調(diào)取接口 StringBuffer userlist= ToInterface.interfaceUtil("http://192.168.10.176:20000/user/getUserList",param.toJSONString(),"POST"); result.put("userlist", userlist); } else { result.put("msg", Constants.NO_AUTH); } } else { result = nullcheck; } return result.toJSONString(); }
接口二
@RequestMapping(value = "/getUserList", method = RequestMethod.POST) public ResponseEntity<Response> getUserList(@RequestBody UserPageDto data) { JSONObject result = new JSONObject(); // 分頁語句 Page<Object> page = PageHelper.startPage(data.getPageNo(), 2); List<User> list = userService.getUserList(data); result.put("userlist", list); // 總記錄數(shù) result.put("pagetotal", page.getTotal()); return success(result); }
接口的調(diào)用與調(diào)用別人的接口
此接口調(diào)用與被調(diào)用,都是在springMVC框架下使用參數(shù)以json格式傳輸。
別人調(diào)用我們的接口,與controller方法開發(fā)類似
@RequestMapping("/otherUseMe.do") public void otherUseMe (HttpServletRequest request,HttpServletResponse response) throw IOException{ //基本設置 response.setContent("appliction/json;charset=utf-8"); //用來給對方傳遞參數(shù) PrintWriter out = response.getWriter(); //系統(tǒng)錯誤,返回結(jié)果 Map<String,Object> exceptionMap = new HashMap<String,Object>(); exceptionMap.put("code","999"); //將錯誤代碼轉(zhuǎn)為json字符串 String exceptionStr = JSONObject.fromObject(excetionMap).toString(); //接收傳來的參數(shù) String name = request.getParameter("name"); String gender = request.getParameter("gender"); try{ boolean flag = "業(yè)務處理"; if(失敗flag){ Map<String,Object> falseMap = new HashMap<String,Object>(); falseMap.put("code","998"); falseMap.put("result","fail"); falseMap.put("description","cry"); String falseStr = JSONObject(falseMap).toString(); out.write(falseStr); }else{ Map<String,Object> succMap = new HashMap<String,Object>(); falseMap.put("code","997"); falseMap.put("result","succ"); falseMap.put("description","smile"); String succStr = JSONObject(falseMap).toString(); out.write(succStr); } }catch(Exception e){ e.printStackTrace(); out.write(exceptionStr); return; }finally{ if(out!=null){ out.close(); } }
我們調(diào)用別人的接口
public boolean IUseOthers(String name,String gender){ HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod("http://111..111.11.11:8080/---");//寫網(wǎng)址 postMethod.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8"); try{ postMethod.addParameter("name",name); postMethod.addParameter("gender",gender); int status = client.executeMethod(postMethod); //獲取返回信息 JSONObject jsonObject = JSONObject.fromObject(postMethod.getResponBodyAsString().toString); String code = jsonObject.getString("code"); boolean flag = false; if("999".equals(code)){ flag =true; } }catch(HttpException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ if(postMehod!=null){ postMehod.releaseConnection(); } } return flag; } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
@DS注解的使用,動態(tài)數(shù)據(jù)源,事務詳解
在項目中使用多數(shù)據(jù)源時,可以借助苞米豆的dynamic-datasource-spring-boot-starter進行配置,首先需引入相應的jar包,并在application.yml中設置主從數(shù)據(jù)源,其中一般選擇master作為默認數(shù)據(jù)源,在實現(xiàn)類中通過@DS注解指定數(shù)據(jù)源2024-09-09mybatis-plus?插入修改配置默認值的實現(xiàn)方式
這篇文章主要介紹了mybatis-plus?插入修改配置默認值的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07官方詳解HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)
這篇文章主要為大家介紹了HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)的?官方詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03