广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现一个接口调取另一个接口(接口一调取接口二)
  • 701
分享到

java实现一个接口调取另一个接口(接口一调取接口二)

2024-04-02 19:04:59 701人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录java一个接口调取另一个接口工具类SpringBoot中使用(接口一)接口二接口的调用与调用别人的接口别人调用我们的接口,与controller方法开发类似我们调用别人的接口j

java一个接口调取另一个接口

工具类


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;
 
//调取接口方法
public class ToInterface {

private static final Logger DEBUGGER = Logger.getLogger(UserInfoController.class); 
 

public static StringBuffer interfaceUtil(String path, Object data, String requestMethod) {
StringBuffer sb = new StringBuffer();
DEBUGGER.info("请求数据:" + 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读入,此外发送post请求必须设置这两个
// 最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
// post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
conn.setDoOutput(true);
conn.setDoInput(true);
// allowUserInteraction 如果为 true,则在允许用户交互(例如弹出一个验证对话框)的上下文中对此 URL 进行检查。
conn.setAllowUserInteraction(false);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数即数据
out.print(data);
// 缓冲数据
out.flush();
out.close();
// 获取URLConnection对象对应的输入流
InputStream is = conn.getInputStream();
// 构造一个字符流缓存
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str = "";
while ((str = br.readLine()) != null) {
sb.append(str);
}
// 关闭流
is.close();
// 断开连接,最好写上,disconnect是在底层tcp Socket链接空闲时才切断。如果正在被其他线程使用就不切断。
// 固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
conn.disconnect();
// System.out.println("完整结束");
DEBUGGER.info("调用app后台接口完整结束");
} 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"};
 
                 // 判断传来的数据是否为空
 
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) {
//调取接口
    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); // 总记录数
result.put("pagetotal", page.getTotal());
return success(result);
}

接口的调用与调用别人的接口

此接口调用与被调用,都是在springMVC框架下使用参数以json格式传输。

别人调用我们的接口,与controller方法开发类似


@RequestMapping("/otherUseMe.do")
public void otherUseMe (HttpServletRequest request,HttpServletResponse response) throw IOException{
 
 //基本设置
 response.setContent("appliction/json;charset=utf-8");
 //用来给对方传递参数
 PrintWriter out = response.getWriter();
 
 //系统错误,返回结果
 Map<String,Object> exceptionMap = new HashMap<String,Object>();
 exceptionMap.put("code","999");
 //将错误代码转为json字符串
 String exceptionStr = JSONObject.fromObject(excetionMap).toString();
 
 //接收传来的参数
 String name = request.getParameter("name");
 String gender = request.getParameter("gender");  
 try{ 
  boolean flag = "业务处理";  
  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();
  } 
 }

我们调用别人的接口


 public boolean IUseOthers(String name,String gender){
  HttpClient client = new HttpClient();
  PostMethod postMethod = new PostMethod("http://111..111.11.11:8080/---");//写网址
  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; 
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java实现一个接口调取另一个接口(接口一调取接口二)

本文链接: https://www.lsjlt.com/news/134347.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现一个接口调取另一个接口(接口一调取接口二)
    目录java一个接口调取另一个接口工具类springboot中使用(接口一)接口二接口的调用与调用别人的接口别人调用我们的接口,与controller方法开发类似我们调用别人的接口j...
    99+
    2022-11-12
  • java在接口中怎么调用另外一个接口
    在Java中,接口之间可以通过继承或实现的方式进行调用。1. 继承方式:如果一个接口A继承自另一个接口B,那么A可以调用B中的所有方...
    99+
    2023-09-13
    java
  • controller接口跳转到另一个controller接口的实现
    controller接口跳转到另一个controller接口 @RestController @RequestMapping("/aaa") public class TestC...
    99+
    2022-11-12
  • java一个接口多个实现得调用
    在 Java 中,如果一个接口有多个实现类,可以通过以下几种方式来调用不同的实现类: 根据具体实现类的类型进行调用: InterfaceA objA = new ImplementationA();InterfaceA objB = new...
    99+
    2023-08-16
    java 代理模式 开发语言
  • Go Ginrest实现一个RESTful接口
    目录背景特性使用例子实现原理功能列表处理请求处理响应处理错误请求上下文操作请求结构体处理注背景 基于现在微服务或者服务化的思想,我们大部分的业务逻辑处理函数都是长这样的: 比如grp...
    99+
    2022-11-11
  • Java 中怎么实现一个Runnable接口
    这期内容当中小编将会给大家带来有关Java 中怎么实现一个Runnable接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。但是Java Runnable 接口并没有任何对线程的支持,我们还必须...
    99+
    2023-06-17
  • C++中怎么实现一个接口
    C++中怎么实现一个接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定理1:C++接口是依赖的终点。接口不需要依赖任何东西。推论1:依赖C++接口是安全的。不会带来更多的...
    99+
    2023-06-17
  • MyEclipse开发一个webservice接口
    一直以来对于接口这个东西都很好奇,各种客户也一直在说那个什么什么数据我们提供给你们一个接口就好了,结果还是不是很明白.于是乎就有了下面的小故事,接下来我们就进入正文吧---大概可以分为这样的步骤新建webservice project,Fr...
    99+
    2023-05-31
    myeclipse webservice 接口
  • java中如何写一个接口并实现
    接口的定义方式如下:[可见度] interface 接口名称 [extends 其他的接口名] { // 声明变量 // 抽象方法}接口的主体包含着抽象方法,但所有方法在接口内(定义上)都是抽象(Abstra...
    99+
    2016-02-11
    java 接口 实现
  • jmeter如何提取上一个接口返回值
    JMeter可以使用正则表达式提取上一个接口返回值。以下是提取上一个接口返回值的步骤:1. 在JMeter中,添加一个正则表达式提取...
    99+
    2023-08-30
    jmeter
  • java中如何定义一个接口
    使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:[修饰符] interface 接口名 [extends 父接口名列表]{ [pub...
    99+
    2018-09-04
    java 定义 接口
  • Python:多态(一个接口多种实现)
    class Animal(object):----def init(self,name):--------self.name=name def talk(self): pass @staticmethod def animal_ta...
    99+
    2023-01-31
    接口 多种 多态
  • C#中怎么实现一个IDisposable接口
    这期内容当中小编将会给大家带来有关C#中怎么实现一个IDisposable接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#语言有很多值得学习的地方,这里我们主要介绍C#实现IDisposable接口...
    99+
    2023-06-17
  • C#中怎么实现一个Strategy接口
    C#中怎么实现一个Strategy接口,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#实现Strategy接口应用常因用户输入、运行平台和部署环境等的不同执行的任务亦不相同。...
    99+
    2023-06-17
  • WCF中怎么实现一个ICommunicationObject接口
    本篇文章为大家展示了WCF中怎么实现一个ICommunicationObject接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。WCF托管特性ICommunicationObject接口publi...
    99+
    2023-06-17
  • VB.NET中怎么实现一个IEnumerator接口
    这篇文章给大家介绍VB.NET中怎么实现一个IEnumerator接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。要VB.NET实现IEnumerator接口,需在实现以下几个函数来支持IEnumerator接口的操...
    99+
    2023-06-17
  • java利用webService 如何实现一个WSDL接口
    java利用webService 如何实现一个WSDL接口?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、使用JDK生成WSDL的对象类cmd进入JDK的bin文件中  ...
    99+
    2023-05-31
    java wsdl webservice
  • 怎么用springboot写一个接口
    要使用Spring Boot编写一个接口,可以按照以下步骤进行操作:1. 创建一个Spring Boot项目:可以使用Spring ...
    99+
    2023-10-08
    springboot
  • 怎么在java中编写一个接口
    这期内容当中小编将会给大家带来有关怎么在java中编写一个接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、...
    99+
    2023-06-14
  • Java中怎么编写一个Runnable接口
    Java中怎么编写一个Runnable接口,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java Runnable接口在进行相关编写的时候需要我们不断的学习相关...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作