欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java本地緩存實現(xiàn)代碼示例

    Java本地緩存實現(xiàn)代碼示例

    這篇文章主要給大家介紹了關于Java本地緩存實現(xiàn)的相關資料,對于緩存的作用不言而喻,可以提高查詢效率,比去DB查詢的速度要快,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-08-08
  • java四種引用及在LeakCanery中應用詳解

    java四種引用及在LeakCanery中應用詳解

    這篇文章主要介紹了java四種引用及在LeakCanery中應用,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 一文詳解Java攔截器與過濾器的使用

    一文詳解Java攔截器與過濾器的使用

    這篇文章主要為大家詳細介紹了Java中攔截器與過濾器的使用與區(qū)別,文中的示例代碼講解詳細,對我們學習有一定參考價值,需要的可以參考一下
    2022-04-04
  • Spring源碼解析 Bean的實例化

    Spring源碼解析 Bean的實例化

    這篇文章主要介紹了Spring源碼解析 Bean的實例化,文章圍繞主題展開詳細的內(nèi)容介紹沒具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Java中List對象集合按對象中某字段進行排序舉例

    Java中List對象集合按對象中某字段進行排序舉例

    這篇文章主要給大家介紹了關于Java中List對象集合按對象中某字段進行排序的相關資料,我們在日常開發(fā)中也經(jīng)常會用到排序算法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • @DS注解的使用,動態(tài)數(shù)據(jù)源,事務詳解

    @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-09
  • mybatis-plus?插入修改配置默認值的實現(xiàn)方式

    mybatis-plus?插入修改配置默認值的實現(xiàn)方式

    這篇文章主要介紹了mybatis-plus?插入修改配置默認值的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 官方詳解HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)

    官方詳解HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)

    這篇文章主要為大家介紹了HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)的?官方詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Spring的@PropertySource注解源碼解析

    Spring的@PropertySource注解源碼解析

    這篇文章主要介紹了Spring的@PropertySource注解源碼解析,就以源碼時序圖的方式,直觀的感受下@PropertySource注解在Spring源碼層面的執(zhí)行流程,需要的朋友可以參考下
    2023-11-11
  • Java 反射機制原理與用法詳解

    Java 反射機制原理與用法詳解

    這篇文章主要介紹了Java 反射機制原理與用法,結(jié)合實例形式詳細分析了java反射機制的相關概念、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-12-12

最新評論