三种⽅法实现调⽤Restful接⼝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 = "localhost:8080/tao-manager-web/";
41            url+=(param+"/xxx");
42            URL restServiceURL = new URL(url);
43            HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL
44                    .openConnection();
45            //param 输⼊⼩写,转换成 GET POST DELETE PUT
46            httpConnection.UpperCase());
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="+ de("abc", "UTF-8");
55                input+="&name="+ de("啊啊啊", "UTF-8");
56                OutputStream outputStream = OutputStream();
57                outputStream.Bytes());
58                outputStream.flush();
59            }
60            if (ResponseCode() != 200) {
61                throw new RuntimeException(
62                        "HTTP GET Request Failed with Error code : "
63                                + ResponseCode());
64            }
65            BufferedReader responseBuffer = new BufferedReader(
66                    new InputStreamReader((InputStream())));
67            String output;
68            System.out.println("Output from Server:  \n");
69            while ((output = adLine()) != 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 ller;
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.ity.UrlEncodedFormEntity;
8 import org.apache.hods.HttpDelete;
9 import org.apache.hods.HttpGet;
10 import org.apache.hods.HttpPost;
11 import org.apache.hods.HttpPut;
12 import org.apache.http.impl.client.HttpClients;
13 import org.ssage.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 ity.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.HttpURLConnection;
30 import java.MalformedURLException;
31 import java.URL;
32 import java.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 = ateDefault();
86            if("get".equals(param)){
87                HttpGet request = new HttpGet("localhost:8080/tao-manager-web/get/"
88                        +"啊啊啊");
89                request.setHeader("Accept", "application/json");
90                HttpResponse response = ute(request);
91                HttpEntity entity = Entity();
92                ObjectMapper mapper = new ObjectMapper();
93                user = Content(), User.class);
94            }else if("post".equals(param)){
95                HttpPost request2 = new HttpPost("localhost:8080/tao-manager-web/post/xxx");
96                List<NameValuePair> nvps = new ArrayList<NameValuePair>();
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 = ute(request2);
102                HttpEntity entity = Entity();
103                ObjectMapper mapper = new ObjectMapper();
104                user = Content(), 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
1    <!-- 配置RestTemplate -->
2    <!--Http client Factory -->
3    <bean id="httpClientFactory"
4        class="org.springframework.http.client.SimpleClientHttpRequestFactory">
5        <property name="connectTimeout" value="10000" />
6        <property name="readTimeout" value="10000" />
7    </bean>
8
9    <!--RestTemplate -->
10    <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
11        <constructor-arg ref="httpClientFactory" />
12    </bean>
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 = ForObject(
13                    "localhost:8080/tao-manager-web/get/{id}",
14                    User.class, "呜呜呜呜");
15
16            //getForEntity与getForObject的区别是可以获取返回值和状态、头等信息
17            ResponseEntity<User> re = template.
18                    getForEntity("localhost:8080/tao-manager-web/get/{id}",
19                    User.class, "呜呜呜呜");
20            System.out.StatusCode());
21            System.out.Body().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<String, String> postParameters = new LinkedMultiValueMap<String, String>();
28            postParameters.add("id", "啊啊啊");
29            postParameters.add("name", "部版本");
30            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(
31                    postParameters, headers);
restful接口调用实例
32            user = template.postForObject(
33                    "localhost:8080/tao-manager-web/post/aaa", requestEntity,
34                    User.class);
35        //删除
36        } else if ("delete".equals(method)) {
37            template.delete("localhost:8080/tao-manager-web/delete/{id}","aaa");
38        //修改
39        } else if ("put".equals(method)) {
40            template.put("localhost:8080/tao-manager-web/put/{id}",null,"bbb");
41        }
42        return user;
43
44    }
45 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。