博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三种方法实现调用Restful接口
阅读量:4322 次
发布时间:2019-06-06

本文共 9913 字,大约阅读时间需要 33 分钟。

1.基本介绍

  Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,

  本次介绍三种:

    1.HttpURLConnection实现

    2.HttpClient实现

    3.Spring的RestTemplate

 

2.HttpURLConnection实现

1 @Controller 2 public class RestfulAction { 3      4     @Autowired 5     private UserService userService; 6  7     // 修改 8     @RequestMapping(value = "put/{param}", method = RequestMethod.PUT) 9     public @ResponseBody String put(@PathVariable String param) {10         return "put:" + param;11     }12 13     // 新增14     @RequestMapping(value = "post/{param}", method = RequestMethod.POST)15     public @ResponseBody String post(@PathVariable String param,String id,String name) {16         System.out.println("id:"+id);17         System.out.println("name:"+name);18         return "post:" + param;19     }20     21 22     // 删除23     @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)24     public @ResponseBody String delete(@PathVariable String param) {25         return "delete:" + param;26     }27 28     // 查找29     @RequestMapping(value = "get/{param}", method = RequestMethod.GET)30     public @ResponseBody String get(@PathVariable String param) {31         return "get:" + param;32     }33     34     35     // HttpURLConnection 方式调用Restful接口36     // 调用接口37     @RequestMapping(value = "dealCon/{param}")38     public @ResponseBody String dealCon(@PathVariable String param) {39         try {40             String url = "http://localhost:8080/tao-manager-web/";41             url+=(param+"/xxx");42             URL restServiceURL = new URL(url);43             HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL44                     .openConnection();45             //param 输入小写,转换成 GET POST DELETE PUT 46             httpConnection.setRequestMethod(param.toUpperCase());47 //            httpConnection.setRequestProperty("Accept", "application/json");48             if("post".equals(param)){49                 //打开输出开关50                 httpConnection.setDoOutput(true);51 //                httpConnection.setDoInput(true);52                 53                 //传递参数54                 String input = "&id="+ URLEncoder.encode("abc", "UTF-8");55                 input+="&name="+ URLEncoder.encode("啊啊啊", "UTF-8");56                 OutputStream outputStream = httpConnection.getOutputStream();57                 outputStream.write(input.getBytes());58                 outputStream.flush();59             }60             if (httpConnection.getResponseCode() != 200) {61                 throw new RuntimeException(62                         "HTTP GET Request Failed with Error code : "63                                 + httpConnection.getResponseCode());64             }65             BufferedReader responseBuffer = new BufferedReader(66                     new InputStreamReader((httpConnection.getInputStream())));67             String output;68             System.out.println("Output from Server:  \n");69             while ((output = responseBuffer.readLine()) != null) {70                 System.out.println(output);71             }72             httpConnection.disconnect();73         } catch (MalformedURLException e) {74             e.printStackTrace();75         } catch (IOException e) {76             e.printStackTrace();77         }78         return "success";79     }80 81 }

 

 

 

3.HttpClient实现

1 package com.taozhiye.controller;  2   3 import org.apache.http.HttpEntity;  4 import org.apache.http.HttpResponse;  5 import org.apache.http.NameValuePair;  6 import org.apache.http.client.HttpClient;  7 import org.apache.http.client.entity.UrlEncodedFormEntity;  8 import org.apache.http.client.methods.HttpDelete;  9 import org.apache.http.client.methods.HttpGet; 10 import org.apache.http.client.methods.HttpPost; 11 import org.apache.http.client.methods.HttpPut; 12 import org.apache.http.impl.client.HttpClients; 13 import org.apache.http.message.BasicNameValuePair; 14 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.stereotype.Controller; 16 import org.springframework.web.bind.annotation.PathVariable; 17 import org.springframework.web.bind.annotation.RequestMapping; 18 import org.springframework.web.bind.annotation.RequestMethod; 19 import org.springframework.web.bind.annotation.ResponseBody; 20  21 import com.fasterxml.jackson.databind.ObjectMapper; 22 import com.taozhiye.entity.User; 23 import com.taozhiye.service.UserService; 24  25 import java.io.BufferedReader; 26 import java.io.IOException; 27 import java.io.InputStreamReader; 28 import java.io.OutputStream; 29 import java.net.HttpURLConnection; 30 import java.net.MalformedURLException; 31 import java.net.URL; 32 import java.net.URLEncoder; 33 import java.util.ArrayList; 34 import java.util.List; 35  36 @Controller 37 public class RestfulAction { 38      39     @Autowired 40     private UserService userService; 41  42     // 修改 43     @RequestMapping(value = "put/{param}", method = RequestMethod.PUT) 44     public @ResponseBody String put(@PathVariable String param) { 45         return "put:" + param; 46     } 47  48     // 新增 49     @RequestMapping(value = "post/{param}", method = RequestMethod.POST) 50     public @ResponseBody User post(@PathVariable String param,String id,String name) { 51         User u = new User(); 52         System.out.println(id); 53         System.out.println(name); 54         u.setName(id); 55         u.setPassword(name); 56         u.setEmail(id); 57         u.setUsername(name); 58         return u; 59     } 60      61  62     // 删除 63     @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE) 64     public @ResponseBody String delete(@PathVariable String param) { 65         return "delete:" + param; 66     } 67  68     // 查找 69     @RequestMapping(value = "get/{param}", method = RequestMethod.GET) 70     public @ResponseBody User get(@PathVariable String param) { 71         User u = new User(); 72         u.setName(param); 73         u.setPassword(param); 74         u.setEmail(param); 75         u.setUsername("爱爱啊"); 76         return u; 77     } 78  79      80      81     @RequestMapping(value = "dealCon2/{param}") 82     public @ResponseBody User dealCon2(@PathVariable String param) { 83         User user = null; 84         try { 85             HttpClient client = HttpClients.createDefault(); 86             if("get".equals(param)){ 87                 HttpGet request = new HttpGet("http://localhost:8080/tao-manager-web/get/" 88                         +"啊啊啊"); 89                 request.setHeader("Accept", "application/json"); 90                 HttpResponse response = client.execute(request); 91                 HttpEntity entity = response.getEntity(); 92                 ObjectMapper mapper = new ObjectMapper(); 93                 user = mapper.readValue(entity.getContent(), User.class); 94             }else if("post".equals(param)){ 95                 HttpPost request2 = new HttpPost("http://localhost:8080/tao-manager-web/post/xxx"); 96                 List
nvps = new ArrayList
(); 97 nvps.add(new BasicNameValuePair("id", "啊啊啊")); 98 nvps.add(new BasicNameValuePair("name", "secret")); 99 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvps, "GBK");100 request2.setEntity(formEntity);101 HttpResponse response2 = client.execute(request2);102 HttpEntity entity = response2.getEntity();103 ObjectMapper mapper = new ObjectMapper();104 user = mapper.readValue(entity.getContent(), User.class);105 }else if("delete".equals(param)){106 107 }else if("put".equals(param)){108 109 }110 } catch (Exception e) {111 e.printStackTrace();112 }113 return user;114 }115 116 117 }

 

4.Spring的RestTemplate

springmvc.xml增加

1     
2
3
5
6
7
8 9
10
11
12

controller

1 @Controller 2 public class RestTemplateAction { 3  4     @Autowired 5     private RestTemplate template; 6  7     @RequestMapping("RestTem") 8     public @ResponseBody User RestTem(String method) { 9         User user = null;10         //查找11         if ("get".equals(method)) {12             user = template.getForObject(13                     "http://localhost:8080/tao-manager-web/get/{id}",14                     User.class, "呜呜呜呜");15             16             //getForEntity与getForObject的区别是可以获取返回值和状态、头等信息17             ResponseEntity
re = template.18 getForEntity("http://localhost:8080/tao-manager-web/get/{id}",19 User.class, "呜呜呜呜");20 System.out.println(re.getStatusCode());21 System.out.println(re.getBody().getUsername());22 23 //新增24 } else if ("post".equals(method)) {25 HttpHeaders headers = new HttpHeaders();26 headers.add("X-Auth-Token", UUID.randomUUID().toString());27 MultiValueMap
postParameters = new LinkedMultiValueMap
();28 postParameters.add("id", "啊啊啊");29 postParameters.add("name", "部版本");30 HttpEntity
> requestEntity = new HttpEntity
>(31 postParameters, headers);32 user = template.postForObject(33 "http://localhost:8080/tao-manager-web/post/aaa", requestEntity,34 User.class);35 //删除36 } else if ("delete".equals(method)) {37 template.delete("http://localhost:8080/tao-manager-web/delete/{id}","aaa");38 //修改39 } else if ("put".equals(method)) {40 template.put("http://localhost:8080/tao-manager-web/put/{id}",null,"bbb");41 }42 return user;43 44 }45 }

 

转载于:https://www.cnblogs.com/xumaojun/p/8521602.html

你可能感兴趣的文章
selenium.Phantomjs设置浏览器请求头
查看>>
分布式数据库如何选择,几种分布式数据库优缺点一览
查看>>
BZOJ 4443: 小凸玩矩阵【二分图】
查看>>
苹果 OS X制作u盘启动盘
查看>>
Jquery便利对象
查看>>
MVC: Connection String
查看>>
idea常用设置汇总
查看>>
Node.SelectNodes
查看>>
Lambda表达式语法进一步巩固
查看>>
Vue基础安装(精华)
查看>>
Git 提交修改内容和查看被修改的内容
查看>>
PAT - 1008. 数组元素循环右移问题 (20)
查看>>
请求出现 Nginx 413 Request Entity Too Large错误的解决方法
查看>>
配置php_memcache访问网站的步骤
查看>>
hibernate的id生成策略
查看>>
树莓派3B+学习笔记:5、安装vim
查看>>
[Spfa][bfs] Jzoj P5781 秘密通道
查看>>
企业帐号进行IPA的打包、分发、下载安装的详细流程(转载)
查看>>
《项目架构那点儿事》——快速构建Junit用例
查看>>
{"errmsg":"invalid weapp pagepath hint: [IunP8a07243949]","errcode":40165}微信的坑
查看>>