首页 > 代码库 > HttpClient的替代者 - RestTemplate
HttpClient的替代者 - 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=http://www.mamicode.com/"/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); }
HttpClient的替代者 - RestTemplate
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。