100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java项目远程调用别的项目接口

java项目远程调用别的项目接口

时间:2023-04-05 04:52:29

相关推荐

java项目远程调用别的项目接口

java项目远程调用别的项目接口

前言一、引入依赖二、编写调用工具类三、测试——Post方式四、测试——Get方式仰天大笑出门去,我辈岂是蓬蒿人

前言

大概内容:

本文是在java项目中远程调用别的项目的接口实现方法演示;通过Apache封装好的CloseableHttpClient。

一、引入依赖

以下是本篇文章正文内容,下面案例可供参考

<!--CloseableHttpClient--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.32</version></dependency>

二、编写调用工具类

import com.alibaba.fastjson.JSONObject;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.util.EntityUtils;import java.io.IOException;/*** 注释: 远程调用工具类** @author yangyongzhuo /11/23 10:39*/public class ConnectUtil {/*** 注释: 以get方式调用第三方接口** @param url地址* @return java.lang.String* @author yangyongzhuo /11/23 10:39*/public static String connectGet(String url) {//创建HttpClient对象CloseableHttpClient httpClient = HttpClientBuilder.create().build();HttpGet httpGet = new HttpGet(url);//token自定义header头,用于token验证使用httpGet.addHeader("token", "");httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36");try {HttpResponse response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//返回json格式return EntityUtils.toString(response.getEntity());}} catch (IOException e) {e.printStackTrace();}return null;}/*** 注释: 以post方式调用第三方接口** @param url地址* @param json 入参* @return java.lang.String* @author yangyongzhuo /11/23 10:39*/public static String connectPost(String url, JSONObject json) {//创建HttpClient对象CloseableHttpClient httpClient = HttpClientBuilder.create().build();HttpPost httpPost = new HttpPost(url);//token自定义header头,用于token验证使用httpPost.addHeader("token", "");httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36");try {StringEntity se = new StringEntity(json.toString());se.setContentEncoding("UTF-8");//发送json数据需要设置contentTypese.setContentType("application/json");//设置请求参数httpPost.setEntity(se);HttpResponse response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//返回json格式String res = EntityUtils.toString(response.getEntity());return res;}} catch (IOException e) {e.printStackTrace();} finally {if (httpClient != null) {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}}return null;}}

三、测试——Post方式

远程调用别的项目方:

/*** 注释: 每十秒执行一次,发送远程请求打印接收的参数* @return void** @author yangyongzhuo /11/21 15:52*/@Scheduled(cron = "0/30 * * * * ?")public void getShieldDate() {String shieldDataUrl="http://172.16.9.36:9002/test/TestData/send"//假设这是入参HashMap<String, Object> paramMap = new HashMap<>();hashMap.put("testParam1","1");hashMap.put("testParam2","2"));//转为Json格式JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(hashMap));//调用工具类String jsonStr = ConnectUtil.connectPost(shieldDataUrl,jsonObject);//接收返回数据Map map= JSON.parseObject(jsonStr);log.info("发送时间->{}", map.get("executeTime"));//把发送的json格式字符串转为对象形式User entity = JSON.parseObject(map.get("data").toString(), User.class);System.err.println(entity);}

被调用方:以下是要远程访问的第三方接口

import cn.hutool.core.date.DateUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.web.bind.annotation.*;import java.nio.charset.Charset;import java.util.HashMap;import java.util.Map;/*** 注释: 数据发送控制器** @author yangyongzhuo /11/21 14:32*/@Slf4j@RestController@RequestMapping("/TestData")public class TestController {/*** 注释: 项目获取数据的数据源* @return java.util.Map<java.lang.String,java.lang.Object>** @author yangyongzhuo /11/21 14:33*/@PostMapping("/send")public Map<String, Object> importData(@RequestBody Map<String,Object> paramMap) {//打印接收到的参数System.err.println(objectMap);//模拟返回的mapMap<String, Object> resultMap = new HashMap<>();resultMap.put("executeTime",new Date());resultMap.put("data",new User());return map;}}

四、测试——Get方式

远程调用别的项目方:

/*** 注释: 发送远程请求打印接收的参数* @return void** @author yangyongzhuo /11/21 15:52*/@Scheduled(cron = CRON_10SEC)public void getShieldDate() {String shieldDataUrl="http://172.16.9.36:9002/test/TestData/send"//假设这是入参String str="/123/456"//调用工具类String jsonStr = ConnectUtil.connectGet(shieldDataUrl+str);//接收返回数据Map map= JSON.parseObject(jsonStr);log.info("数据发送时间->{}", map.get("executeTime"));//把发送的json格式字符串转为对象形式User entity = JSON.parseObject(map.get("data").toString(), User.class);System.err.println(entity);}

被调用方:以下是要远程访问的第三方接口

import cn.hutool.core.date.DateUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.web.bind.annotation.*;import java.nio.charset.Charset;import java.util.HashMap;import java.util.Map;/*** 注释: 数据发送控制器** @author yangyongzhuo /11/21 14:32*/@Slf4j@RestController@RequestMapping("/TestData")public class TestController {/*** 注释: 项目获取数据的数据源* @return java.util.Map<java.lang.String,java.lang.Object>** @author yangyongzhuo /11/21 14:33*/@GetMapping("/send/{id}/{name}")public Map<String, Object> importData(@PathVariable String id,@PathVariable String name) {//打印接收到的参数System.err.println(id,name);//模拟返回的mapMap<String, Object> resultMap = new HashMap<>();resultMap.put("executeTime",new Date());resultMap.put("data",new User());return map;}}

仰天大笑出门去,我辈岂是蓬蒿人

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。