本文共 9826 字,大约阅读时间需要 32 分钟。
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 Listnvps = 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 35 8 9 106 7 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 ResponseEntityre = 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 }
转载地址:http://zordx.baihongyu.com/