当前位置: 首页 > news >正文

营销型网站建设网站建设制作珠海网站建设制作

营销型网站建设网站建设制作,珠海网站建设制作,wordpress瀑布流主题,免费ppt下载网站使用SpringBoot跨系统调用接口的方案 一、简介 项目开发中存在系统之间互调问题#xff0c;又不想用dubbo#xff0c;这里提供几种SpringBoot方案#xff1a; 1、使用Feign进行消费#xff08;推荐#xff09; 2、使用原始httpClient请求 3、使用RestTemplate方法 二…使用SpringBoot跨系统调用接口的方案 一、简介 项目开发中存在系统之间互调问题又不想用dubbo这里提供几种SpringBoot方案 1、使用Feign进行消费推荐 2、使用原始httpClient请求 3、使用RestTemplate方法 二、方案 方案一使用Feign进行消费推荐 1、在maven中添加依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactIdversion2.2.2/version /dependency2、启动类上加上EnableFeignClients EnableHystrix EnableDiscoveryClient EnableFeignClients(basePackages {com.aaa.aurora}) SpringBootApplication EnableTransactionManagement ComponentScan(basePackages com.aaa.aurora) ImportResource(locations {classpath:spring.xml,spring-security.xml}) MapperScan(com.aaa.aurora.mapper) public class AuroraWebApplication {public static void main(String[] args) {SpringApplication.run(AuroraWebApplication.class, args);} }3、编写service接口 FeignClient(url ${pangu.url},name panguUrl) public interface PanGuService {RequestMapping(value /pangu/restful/check,method RequestMethod.POST)JSONObject check(RequestParam(namequeryEngine) String queryEngine, RequestParam(namequerySql) String querySql, RequestParam(namejobNo) String jobNo);}其中pangu.url是配置在application.properties中的ip及端口 pangu.url 192.168.1.3:8080/pangu/restful/check是要调的接口名4、代码中调用 Autowired private PanGuService panGuService; JSONObject jsonObject null; try {jsonObject panGuService.auroraPriviledge(PRESTO_DRIVER, query.get(sql), user.getWorkNo()); } catch (Exception e) {throw new Exception(请求系统异常); } if (PANGU_FAIL.equals(jsonObject.get(code))) {LOG.info(jsonObject.get(msg).toString());throw new BusinessException(jsonObject.get(msg).toString()); }方案二使用原始httpClient请求 使用HttpClient发送请求、接收响应很简单一般需要如下几步即可。 创建HttpClient对象。 创建请求方法的实例并指定请求URL。如果需要发送GET请求创建HttpGet对象如果需要发送POST请求创建HttpPost对象。 如果需要发送请求参数可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数对于HttpPost对象而言也可调用setEntity(HttpEntity entity)方法来设置请求参数。 调用HttpClient对象的execute(HttpUriRequest request)发送请求该方法返回一个HttpResponse。 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头调用HttpResponse的getEntity()方法可获取HttpEntity对象该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。 释放连接。无论执行方法是否成功都必须释放连接。 Autowired private PanGuService panGuService; JSONObject jsonObject null; try {jsonObject panGuService.auroraPriviledge(PRESTO_DRIVER, query.get(sql), user.getWorkNo()); } catch (Exception e) {throw new Exception(请求系统异常); } if (PANGU_FAIL.equals(jsonObject.get(code))) {LOG.info(jsonObject.get(msg).toString());throw new BusinessException(jsonObject.get(msg).toString()); }方案三使用RestTemplate方法 1.get请求getForObject(…)和getForEntity(…)两个方法区别在于前者直接返回预期的对象即返回体中的body对象后者返回的是ResponseEntity封装类里面包含了HTTP请求的头信息。 2.post请求与get请求类似只是多一个request参数request对象会作为httpEntity进行处理。 package com.yyy.aurora; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import java.net.URI; import java.util.HashMap; import java.util.Map;public class TestRest {public static void main(String[] args) {RestTemplate restTemplate new RestTemplate();//get请求//方法一getForEntity(String url, ClassT responseType, Object... uriVariables),没有参数String url https://restapi.amap.com/v3/ip?key075b6eddd825148a674dfa8a8558ac62ResponseEntityString forEntity restTemplate.getForEntity(url, String.class);System.out.println(forEntity);// 200,{status:1,info:OK,infocode:10000,province:上海市,city:上海市,adcode:310000,rectangle:120.8397067,30.77980118;122.1137989,31.66889673},{Server[Tengine], Date[Sat, 18 Apr 2020 02:47:38 GMT], Content-Type[application/json;charsetUTF-8], Content-Length[167], Connection[close], X-Powered-By[ring/1.0.0], gsid[011130051098158717805837600019751129378], sc[0.071], Access-Control-Allow-Origin[*], Access-Control-Allow-Methods[*], Access-Control-Allow-Headers[DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,key,x-biz,x-info,platinfo,encr,enginever,gzipped,poiid]}String s restTemplate.getForObject(url, String.class);System.out.println(s);// {province:上海市,city:上海市,adcode:310000,infocode:10000,rectangle:120.8397067,30.77980118;122.1137989,31.66889673,status:1,info:OK}//方法一getForEntity(String url, ClassT responseType, Object... uriVariables),url中用占位符传入参数//该方法提供了三个参数其中var1为请求的地址(即url)var2为请求响应body的包装类型var3为url中的参数绑定url https://restapi.amap.com/v3/ip?key{?};forEntity restTemplate.getForEntity(url, String.class, 075b6eddd825148a674dfa8a8558ac62);//方法二getForEntity(String url, ClassT responseType, MapString, ? uriVariables),map传参url https://restapi.amap.com/v3/ip?key{key};MapString, Object map new HashMap();map.put(key, 075b6eddd825148a674dfa8a8558ac62);forEntity restTemplate.getForEntity(url, String.class, map);//方法三getForEntity(URI url, ClassT responseType),uri传参URI uri URI.create(https://restapi.amap.com/v3/ip?key075b6eddd825148a674dfa8a8558ac62);forEntity restTemplate.getForEntity(uri, String.class);//post请求,与get请求类型,只是多一个必填request对象//postForEntity(String url, Nullable Object request, ClassT responseType, Object... uriVariables)forEntity restTemplate.postForEntity(url, null, String.class, 075b6eddd825148a674dfa8a8558ac62);s restTemplate.postForObject(url, null, String.class, 075b6eddd825148a674dfa8a8558ac62);} }补充SpringBoot关于系统之间的远程互相调用 1、SpringBoot关于系统之间的远程互相调用 可以采用RestTemplate方式发起Rest Http调用提供有get、post等方式。 1、1远程工具类 此处使用Post方式参考下面封装的HttpClient类 1.1 /*** Desc: 远程连接工具类*/ Service public class HttpClient {/*** 根据远程地址发起访问-参数类型为form表单* param url 远程地址* param method 远程方法* param params 方法参数* return*/public Object client(String url,HttpMethod method,MultiValueMapString,String params){RestTemplate restTemplate new RestTemplate();HttpHeaders headers new HttpHeaders();headers.add(Content-Type, application/x-www-form-urlencoded);HttpEntityMultiValueMapString, String httpEntity new HttpEntity(params, headers);ResponseEntityString responseEntity restTemplate.postForEntity(url,httpEntity,String.class);String body responseEntity.getBody();JSONObject jsonObject JSONObject.parseObject(body);return jsonObject.get(data);}/*** 根据远程地址发起访问-参数类型为JSON* param url 远程地址* param method 远程方法* aram params 方法参数* eturn*/public Object clientJson(String url,HttpMethod method,MapString,Object params){RestTemplate restTemplate new RestTemplate();HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_UTF8);cn.hutool.json.JSONObject jsonObject JSONUtil.parseFromMap(params);HttpEntitycn.hutool.json.JSONObject httpEntity new HttpEntity(jsonObject, headers);ResponseEntityString responseEntity restTemplate.postForEntity(url,httpEntity,String.class);String body responseEntity.getBody();JSONObject jsonObjectResult JSONObject.parseObject(body);return jsonObjectResult.get(data);} }1、2远程参数说明 工具类中提供了远程过程中传递参数的两种格式 其中 headers.add(“Content-Type”, “application/x-www-form-urlencoded”) 为form表单格式支持键值对数据传输 当参数类型为form表单时数据需要封装成MultiValueMapString,String格式前台使用controller接受时可以直接使用 MultiValueMap 变量接收代码如下 接受参数为form对象 /*** 保存分组策略对象* param* return*/ RequestMapping(value /saveDocGroupPolicy,method RequestMethod.POST) public ApiResult saveGroupPolicy(RequestParam MultiValueMapString,String paramMap,Valid GroupStrategyIO groupStrategyIO){Integer userId ShiroUtil.getExamUserId();ListString userList new ArrayList();userList.add(userId);paramMap.put(userId,userList);Object jsonObject httpClient.client(ExamConfigConstants.url/exam/configPolicy/saveDocGroupPolicy, HttpMethod.POST, paramMap);return ApiResult.success(jsonObject); }headers.setContentType(MediaType.APPLICATION_JSON_UTF8)接收参数为复杂json串 为json数据格式 当参数为json格式时远程服务器接受参数需加上注解RequestBody对于复杂参数可以使用对象接受将对象转为Map对数据进行加工再将map转化为JSONObject /*** 保存试卷策略* param paperStrategyIO 试卷策略对象* return*/RequestMapping(value /savePaperConfig) public ApiResult savePaperConfig(RequestBody PaperStrategyIO paperStrategyIO){MapString, Object paramMap BeanUtil.beanToMap(paperStrategyIO);Integer userId ShiroUtil.getExamUserId();paramMap.put(userId,userId);Object jsonObject httpClient.clientJson(ExamConfigConstants.url/exam/paper/savePaperConfigWithMap, HttpMethod.POST, paramMap);return ApiResult.success(jsonObject); }2、后记 关于RestTemplate还有很多可调用的API,可以查看官方网站了解 REST in Spring 3: RestTemplate
http://wiki.neutronadmin.com/news/114589/

相关文章:

  • 免费的tickle网站logo设计报价明细表
  • 高质量网站外链平台捕鱼网站开发
  • 湖南中虹羽建设工程有限公司网站asp网站301
  • 站内搜索工具网页qq登录网址
  • 深圳网站建设现网站建设岗位将来有什么发展
  • 优化网站及商品排名怎么做宣城哪里做网站
  • 韩国网站如何切换中文郑州seo哪家好
  • 北海网站建设公司网站横幅怎么做
  • 江西省城乡建设厅网站广州专业的网站开发公司
  • 襄阳城乡建设局网站首页免费网站正能量app应用大全
  • 手机网站建设推广自己做的博客网站吗
  • 招商网站建设的必要性什么网站专门做自由行的
  • 钓鱼网站制作视频教程最近时政新闻10条
  • 扁平式网站淘宝网页版电脑版登录淘宝网
  • 网站域名空间管理东莞招聘网有哪些比较好
  • 网站建设公司哪家好 在线磐石网络nas服务器可以做网站吗
  • 徐州云建站模板织梦模板可以在wordpress用
  • 如何投诉做网站的公司建设部网站上查不到资质的企业
  • 外贸网站仿牌主机怎么找wordpress模板代码
  • 网站做权重的好处昆明响应式网站制作
  • 常州做网上废品收购网站做网站数据存在哪里
  • 一流的盐城网站建设室内设计师可以自学吗
  • 私人网站建设成本python在线观看
  • 国外做做网站怎么做网站dns加速
  • 兰州网站建设企业名录前端开发工具哪个好
  • 网站建设 创业网站建设投标书范本
  • 旅游网站开发系统分析app开发的价值
  • 手机登录网站后台网络营销托管服务商指的是
  • 怎样在工商局网站做公示深圳网络设计公司
  • 哪个网站可以做自己的网页刷粉网站推广快点