好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

工具类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

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 );

 

/**

* 调用对方接口方法

*

* @param path

*            对方或第三方提供的路径

* @param data

*            向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析

* @param requestMethod

*            请求方式

*

*/

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中使用(接口一)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

@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();

     }

接口二

?

1

2

3

4

5

6

7

8

9

10

@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方法开发类似

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

@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();

   }

  }

我们调用别人的接口

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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;

  }

}

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

原文链接:https://blog.csdn.net/qq_33931552/article/details/80907462

查看更多关于java实现一个接口调取另一个接口(接口一调取接口二)的详细内容...

  阅读:15次