zoukankan      html  css  js  c++  java
  • HttpClient与Spring RestTemplate

    需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式  
    客户端和服务端都用到一下的包
     <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${org.springframework-version}</version>
                <exclusions>
                    <!-- Exclude Commons Logging in favor of SLF4j -->
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                     </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${org.springframework-version}</version>
            </dependency>
    
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
              <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.8.1</version>
            </dependency>  
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
             <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.8.1</version>
            </dependency> 
                    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
             <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.8.1</version>
            </dependency>  
    一、服务器端代码如下,主要是提供两个接口
    
    @Controller
    @RequestMapping("/rest")
    public class RestController {
    
      //http://localhost:8080/Springmvc/rest/getPerson
        @RequestMapping(value="/getPerson",method=RequestMethod.GET)
        @ResponseBody
        public Person getPerson(Integer id){
            System.out.println("getPerson..."+id);
            Person p = new Person("tom", 12);
            return p;
        }
        
      //http://localhost:8080/Springmvc/rest/postPerson
        @ResponseBody
        @RequestMapping(value="/postPerson",method=RequestMethod.POST)
        public Person postPerson(@RequestBody Person p){
            //@RequestBody用于接收传来的对象,不加的话会接收不到数据
            System.out.println("call postPerson :"+p);
            return p;
        }
    }

    二、客户端代码:

    1. HttpClient风格的

    package com.mvc.rest;
    
    import java.io.IOException;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.HttpClients;
    
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.mvc.entity.Person;
    
    public class MyClient {
        
        /**
         * 需要apache的http包和json包
         * */
        public static void main(String[] args) throws JsonParseException, JsonMappingException, UnsupportedOperationException, IOException {
            
            //HttpClient是Apache的
            HttpClient client = HttpClients.createDefault();
            HttpGet request = new HttpGet("http://localhost:8080/Springmvc/rest/getPerson?id=1");
            request.setHeader("Accept", "application/json");
            HttpResponse response = client.execute(request);
            HttpEntity entity = response.getEntity();
            
            //利用json的ObjectMapper把请求到的数据转化为对象
            ObjectMapper mapper = new ObjectMapper();
            Person p =mapper.readValue(entity.getContent(), Person.class);
            System.out.println(p);
        }
    
    }

    2.RestTemplate 风格的

    import org.springframework.web.client.RestTemplate;

      
    Spring提供的Rest风格的RestTemplate比Apache的HttpClient操作更方便

      @Bean(name="restTemplate") public RestTemplate restTemp(){ return new RestTemplate(); }
      @Autowired
        private RestTemplate re;
        
        @RequestMapping("/testRestTemplate")
        public void get(){
            
            //Person p = re.getForObject("http://localhost:8080/Springmvc/rest/getPerson", Person.class);
            Person p = re.postForObject("http://localhost:8080/Springmvc/rest/postPerson", new Person("hello",34),Person.class);
            //re.put(url, request, urlVariables);
            //re.delete(url, urlVariables);
            
            System.out.println("call testRestTemplate  :"+p);
        }
  • 相关阅读:
    平台架构设计及市场分析
    编写jQuery插件
    分布式锁
    初探12306售票算法(一)- 理论(转)
    年后跳槽如何准备?(转)
    therefore/so/hence/then/accordingly/Thus
    ignore,neglect,omit,overlook
    OOA/OOD/OOP(转)
    SQL Server里的 ISNULL 与 NULLIF
    稀疏矩阵
  • 原文地址:https://www.cnblogs.com/wwzyy/p/6260176.html
Copyright © 2011-2022 走看看