java调用一个外部url_java 从程序内部调用外部url/接口
本人微信 zf363133213 欢迎各位添加好友,共同探讨问题
第一种方法:
public Object test(){
HttpHeaders headers = new HttpHeaders();//http请求头
RestTemplate restTemplate = new RestTemplate();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
headers.add("versionNo","123");
Mapbody = new HashMap<>();//请求body
body.put("carNo","123");
HttpEntity> requestEntity=new HttpEntity>(body,headers);
Mapmap = restTemplate.postForObject("http://test/get",requestEntity,Map.class);
//String jsonStr =restTemplate.postForObject("http://test/get",requestEntity,String.class);
retrurn map;
}
第二种方法:
public Object test(){
Mapcontent =new HashMap();
content.put("carNo","123");//请求参数
HttpClient httpClient = new HttpClient();
PostMethod post = new PostMethod("http://test/get");
post.addRequestHeader("appId","123");
post.addRequestHeader("content-type","application/json;charset=utf-8");
RequestEntity entity =new StringRequestEntity(JSONObject.toJSONString(content),"application/json;charset=utf-8","utf-8");
post.setRequestEntity(entity);
httpclient.executeMethod(post);
String info=new String(post.getResponseBody(),"utf-8");
return info;
}
第三种带token的
@Autowired
private RestTemplate restTemplate;
@Value("${monthRouteUrl}")//在配置文件中配置url
private String url;
定义header方法:
private HttpHeaders createHttpHeaders(String token){
HttpHeaders headers = new HttpHeaders();
//自定义表头
headers.setContentType(new MediaType("application","json",Charset.forName("UTF-8")));
//设置接收
headers.setAccept(Lists.newArrayList(MediaType.APPLICATION_JSON));
headers.setAcceptCharset(Lists.newArrayList(Charset.forName("UTF-8")));
//把token加入header中
headers.add("token",token);
return headers;
}
private Map> getEachDimension( EarlywarningOverviewDTO earlywarning){
//head 调上面方法
HttpHeaders headers = createHttpHeaders(earlywarning.getToken());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
//封装参数对象和请求头
HttpEntityrequest = new HttpEntity(earlywarning,hearers);
//调用
ResponseEntityexchange = restTemplate.exchange(url,HttpMethod.POST,requestEntity,String.class);
//得到返回状态
String status = exhange.getStatusCode().toString();
//最终我们想转成的对象集合,具体属性要和写这个接口的人返回的属性一样
Listdimensions = Lists.newArrayList();
if("200".contains(status)){
Map map = JSON.parseObject(exchange.getBody(),Map.class);
if(null != map.get("data")){
String data = map.get("data").toString();
//data就是返回的,把他转换为我们需要的对象
dimensions = JSON.parseArray(data,SelectDimensionDTO.class);
}
dimensions 就可以用了
}
}
第四种 如果不通过他的权限过滤,不要token
则如下:
private MonthlyRouteDTO getMonthRoute(DetailPageDimensionDTO detailPageDimensionDTO ){
//我们想要最终转换的对象,属性要跟这个接口的属性一致
MonthRoutDTO monthRoutDTO = null;
//直接调工具类方法,参数是url和detailPageDimensionDTO
String result = HttpUtil.requestPost(url,detailPageDimensionDTO );
log.info("-----远程调用:{}----",null== result?null:JSONObject.toJSONString(result));
if(!StringUtils.isEmpty(result)){
Map map = JSON.parseObject(result,Map.class);
String status = (String)map.get("code")
if("1000".equals(status)){
String data = map.get("data").toString();
monthlyRouteDTO = JSON.parseObject(data,MonthlyRouteDTO.class);
}
}
}
//工具类
@Slf4j
public class HttpUtil{
public static String requestPost(String strUrl ,Object content){
String info = null;
try{
HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod(strUrl);
post.addRequestHeader("Content-Type","application/json;charset=utf-8");
RequestEntity entity = new StringRequestEntity(JSONObject.toJSONString(content),"application/json;charset=utf-8","utf-8");
post.setRequestEntity(entity);
httpclient.executeMethod(post);
info = new String(post.getResponseBody(),"utf-8");
return info;
} catch(Exception e){
log.info("-------requestPost异常:{}",e)
}
return "";
}
java调用一个外部url_java 从程序内部调用外部url/接口相关推荐
- 解决python调用 ffmpeg时 ‘ffmpeg‘ 不是内部或外部命令,也不是可运行的程序
解决 python 调用 ffmpeg时 'ffmpeg' 不是内部或外部命令,也不是可运行的程序 在windows系统下, 我们使用windows下,使用ffmpeg库调用FFmpeg工具来提取视频 ...
- java递归怎么写_什么是递归?用Java写一个简单的递归程序
什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...
- 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序
利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...
- java中一个简单的涂鸦程序
涂鸦是一个在网络聊天中经常会用到的工具,由于笔者水平有限,只能说下一个简单的涂鸦,就是在面板中可以用画笔自己花一些东西.我使用的是画实心矩形(或者圆形)来达到目的,通过监听鼠标事件来获得鼠标点击的坐标 ...
- 用java设计一个文件查重程序,输入两个文本文件,输出两个文本文件的重复率(最长公共子序列的应用)...
你可以使用java代码来设计一个文件查重程序.首先,你需要读取两个文本文件的内容,将它们存储在字符串变量中.然后,你可以使用最长公共子序列(LCS)算法来计算两个字符串的重复率. LCS算法的实现方法 ...
- java实现一个跳转结构程序,Java程序设计基础(第6版)最新章节_鲜征征著_得间小说...
4.3 分支结构 分支结构又称为选择结构,是一种在两种以上的多条执行路径中选择一条执行的控制结构,这里所说的执行路径是指一组语句.通常分支结构要先做一个判断,然后根据判断的结果来决定选择哪一条执行路径 ...
- java体重指数计算器程序_用Java编写一个简单的计算器程序
展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...
- java编写一个ATM取款机小程序
此程序效果图如下: 一下为源代码: package step4; import java.util.Scanner; public class ForPractice4 { public static ...
- 用java开发一个人脸识别小程序demo
转载自: https://shimo.im/docs/qDyGddWVhRXVpv8r/read https://shimo.im/docs/GHcvW3WyVQRXckdG/read https:/ ...
最新文章
- SDN/NFV步入规模部署期 运营商拓智能化成大势所趋
- 数据倾斜的原因和解决方案
- 用python+flask自己制作api(教程附源码)
- 广州站 | 云原生 Serverless 技术实践营精彩回顾
- Objc基础学习记录5
- 基于Java+SpringBoot+vue+element等动物救助平台设计和实现
- 信息学奥赛一本通(1157:哥德巴赫猜想)
- ROUTE ADD 命令详解
- 互联网架构师祝大家中秋节快乐!快领红包了!
- 【BZOJ 1491】 [NOI2007]社交网络
- 【转载】高斯滤波器详解
- 国考银保监会计算机类笔试,银保监会(计算机类)笔试资料(含2018-2019真题).zip...
- php+剧影评系统 毕业设计-附源码140859
- 学校机房中无法使用Todesk和向日葵控制寝室电脑,可以使用Parsec进行控制的步骤。
- Mac下搭建Texstudio+Textlive(Mactex)
- 各种中文分词工具的使用方法
- 云计算运维工程师前景怎么样?
- 企业为什么选择SDWAN代替MPLS?
- Big-man与PHP的交战(一)——阅读PHP代码
- [Android]如何做一个崩溃率少于千分之三噶应用app(22)-组件化路由跳转
热门文章
- python如何安装pipwindows_如何在Windows上使用python 2.6安装pip
- JavaSE基础篇之-Java 流(Stream)、文件(File)和IO
- Spring-IOC本质
- [vue-router] Duplicate named routes definition: { name: “XXX“, path: “XXX“ }
- java 接口 回调_Java接口回调机制详解
- 持久化策略RDB和AOF的简单理解
- 520超浪漫文艺表白,追求女神必备!!动态Html网页,无编程基础也可娱乐
- java 基本语法与流程控制_java基础语法2-运算符与流程控制
- 函数的基本知识点总结(附实例)
- C# mysql导入文件报错:The used command is not allowed with this MySQL version