Java调用RestFul接口
使用Java调用RestFul接口,以POST请求为例,以下提供几种方法:
一、通过HttpURLConnection调用
 1 public String postRequest(String url, String param) {
 2     StringBuffer result = new StringBuffer();
 3
 4     HttpURLConnection conn = null;
 5     OutputStream out = null;
 6     BufferedReader reader = null;
 7     try {
 8         URL restUrl = new URL(url);
 9         conn = (HttpURLConnection) restUrl.openConnection();
10         conn.setRequestMethod("POST");
11         conn.setDoOutput(true);
12         conn.setDoInput(true);
13
14         conn.setRequestProperty("accept", "*/*");
15         conn.setRequestProperty("connection", "Keep-Alive");
16         conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
17         conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
18
19         conn.connect();
20         out = conn.getOutputStream();
21         out.write(param.getBytes());
22         out.flush();
23
24         int responseCode = conn.getResponseCode();
25         if(responseCode != 200){
26             throw new RuntimeException("Error responseCode:" + responseCode);
27         }
28
29         String output = null;
30         reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
31         while((output=reader.readLine()) != null){
32             result.append(output);
33         }
34     } catch (Exception e) {
35         e.printStackTrace();
36         throw new RuntimeException("调用接口出错:param+"+param);
37     } finally {
38         try {
39             if(reader != null){
40                 reader.close();
41             }
42             if(out != null){
43                 out.close();
44             }
45             if(conn != null){
46                 conn.disconnect();
47             }
48         } catch (Exception e2) {
49             e2.printStackTrace();
50         }
51     }
52
53     return result.toString();
54 }
二、通过Spring提供的RestTemplate模板调用
 1 public class RestTemplateUtil {
 2
 3     @Autowired
 4     private RestTemplate restTemplate;
 5
 6     @Bean
 7     public RestTemplate restTemplate(){
 8         RestTemplate template = new RestTemplate();
 9         // messageConverters是RestTemplate的一个final修饰的List类型的成员变量
10         // messageConverters的第二个元素存储的是StringHttpMessageConverter类型的消息转换器
11         // StringHttpMessageConverter的默认字符集是ISO-8859-1,在此处设置utf-8字符集避免产生乱码
12         template.getMessageConverters().set(1, new StringHttpMessageConverter(Charset.forName("utf-8")));
13         return template;
14     }
15
16     public String post(String url, String jsonParam){
17         // 自定义请求头
18         HttpHeaders headers = new HttpHeaders();
19         headers.setContentType(MediaType.APPLICATION_JSON);
20         headers.setAcceptCharset(Collections.singletonList(Charset.forName("utf-8")));
21         headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
22
23         // 参数
24         HttpEntity<String> entity = new HttpEntity<String>(jsonParam, headers);
25         // POST方式请求
26         ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
27         if(responseEntity == null){
28             return null;
29         }
30
31         return responseEntity.getBody().toString();
32     }
33
34 }
三、通过HttpClient调用
 1 public class HttpClientUtil {
 2
 3     public String post(String url, Map<String, Object> pramMap) throws Exception {
 4         String result = null;
 5         // DefaultHttpClient已过时,使用CloseableHttpClient替代
 6         CloseableHttpClient closeableHttpClient = null;
 7         CloseableHttpResponse response = null;
 8         try {
 9             closeableHttpClient = HttpClients.createDefault();
10             HttpPost postRequest = new HttpPost(url);
11             List<NameValuePair> pairs = new ArrayList<>();
12             if(pramMap!=null && pramMap.size() > 0){
13                 for (Map.Entry<String, Object> entry : pramMap.entrySet()) {
14                     pairs.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue())));
15                 }
16             }
17             UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs, "utf-8");
18             postRequest.setEntity(formEntity);
19
20             response = closeableHttpClient.execute(postRequest);
21             if(response!=null && response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
22                 result = EntityUtils.toString(response.getEntity(), "utf-8");
23             }else{
24                 throw new Exception("post请求失败,url" + url);
25             }
26
27         } catch (Exception e) {
28             e.printStackTrace();
29             throw e;
30         } finally {
31             try {
32                 if(response != null){
33                     response.close();
34                 }
35                 if(closeableHttpClient != null){
36                     closeableHttpClient.close();
37                 }
38             } catch (IOException e) {
39                 e.printStackTrace();
40             }
41         }
42
43         return result;
44     }
45
46 }
Java调用RestFul接口的更多相关文章
- 三种方法实现java调用Restful接口
		
1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
 - java调用restful接口的方法
		
Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法如下: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring的RestTemplate
 - Java 调用Restful API接口的几种方式--HTTPS
		
摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...
 - 三种方法实现调用Restful接口
		
1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
 - Java调用webservice接口方法
		
java调用webservice接口 webservice的 发布一般都是使用WSDL(web service descriptive langu ...
 - python 调用RESTFul接口
		
本周需要将爬虫爬下来的数据入库,因为之前已经写好PHP的接口的,可以直接通过python调用PHP接口来实现,所以把方法总结一下. //python编码问题,因为好久用,所以很容易出现 # -*- c ...
 - Java 调用http接口(基于OkHttp的Http工具类方法示例)
		
目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...
 - (二)通过JAVA调用SAP接口 (增加一二级参数)
		
(二)通过JAVA调用SAP接口 (增加一二级参数) 一.建立sap连接 请参考我的上一篇博客 JAVA连接SAP 二.测试项目环境准备 在上一篇操作下已经建好的环境后,在上面的基础上新增类即可 三. ...
 - Java方法通过RestTemplate调用restful接口
		
背景:项目A需要在代码内部调用项目B的一个restful接口,该接口是POST方式,header中 Authorization为自定义内容,主要传输的内容封装在body中,所以使用到了RestTemp ...
 
随机推荐
- Eclipse中,No compiler is provided in this environment. Perhaps you are running on a JRE rather than a
			
问题说明 Eclipse导入Maven项目后,执行 mvn clean install后,出现如下错误: [INFO] ---------------------------------------- ...
 - CentOS 8 安装Nginx
			
安装命令: dnf install nginx -y 这就安装完成了 ,对你没看错一个命令就已经把nginx安装好了,不信你通过 nginx -V 命令查看. 常用操作: 1.nginx配置文件目录 ...
 - Object[] cannot be converted to String[]
			
原因: 你应该是想把List数组转 String数组吧! 然后想当然的调用list.toArray()方法. 结果 该方法返回的是Object[]数组,导致类型不匹配! 解决办法: 还在乖乖的用循环吧 ...
 - Vue - MVVM模式及优点
			
MVVM模式 视图层和数据层的双向绑定,让我们无需再去关心DOM操作的事情,更多的精力放在数据和业务逻辑上去 MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想. Mod ...
 - 重温Java JDK安装,希望帮助更多的学习在路上的小白
			
JDK卸载和安装 现在JDK已经升级到JDK11版本了,但是JDK1.8(JDK8)仍然有很多小伙伴在使用,这里也记录一下jdk1.8的下载及安装过程,对于刚学习java的小伙伴可以参考,熟手可忽略, ...
 - securefx 系统中不到指定文件 (转中文)
			
如何处理上传工具SecureFX中的中文乱码 工具/原料 SecureFX centos7 方法/步骤 转百度知道 https://jingyan.baidu.com/article/eae07 ...
 - day123:MoFang:直播间列表信息的前后端实现&创建房间的前后端实现
			
目录 1.服务端提供所有直播间的列表信息 2.前端显示房间列表 3.创建房间 1.服务端提供所有直播间的列表信息 1.marshmallow.py from marshmallow_sqlalchem ...
 - Centos搭建Git服务端
			
首先需要安装git,可以使用yum源在线安装 yum install -y git 创建一个git用户,用来运行管理git服务 adduser git 初始化git仓库(这里我们选择/home/git ...
 - bash shell数组使用总结
			
本文为原创博文,转发请注明原创链接:https://www.cnblogs.com/dingbj/p/10090583.html 数组的概念就不多说了,大家都懂! shell数组分为索引数组和关联数 ...
 - 20.java设计模式之解释器模式
			
基本需求 实现四则运算,如计算a+b-c+d的值 先输入表达式的形式,如a+b-c+d,要求表达式正确 再分别输出a,b,c,d的值 最后求出结果 传统方案 编写一个方法,接收表达式的形式,根据用户输 ...