gpt4 book ai didi

java调用Restful接口的三种方法

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java调用Restful接口的三种方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1,基本介绍

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

  本次介绍三种:

    1.HttpURLConnection实现 。

    2.HttpClient实现 。

    3.Spring的RestTemplate      。

2,HttpURLConnection实现

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

3.HttpClient实现

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

4.Spring的RestTemplate

springmvc.xml增加 。

?
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 配置RestTemplate -->
     <!--Http client Factory -->
     < bean id = "httpClientFactory"
         class = "org.springframework.http.client.SimpleClientHttpRequestFactory" >
         < property name = "connectTimeout" value = "10000" />
         < property name = "readTimeout" value = "10000" />
     </ bean >
 
     <!--RestTemplate -->
     < bean id = "restTemplate" class = "org.springframework.web.client.RestTemplate" >
         < constructor-arg ref = "httpClientFactory" />
     </ bean >

controller 。

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

到此这篇关于java调用Restful接口的三种方法的文章就介绍到这了,更多相关java调用Restful接口内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://www.cnblogs.com/yuluoxingkong/p/8818538.html 。

最后此篇关于java调用Restful接口的三种方法的文章就讲到这里了,如果你想了解更多关于java调用Restful接口的三种方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com