Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 방법

HttpClient
두 시스템 간 에 어떻게 서로 방문 합 니까?두 tomcat 의 프로젝트 는 어떻게 서로 방문 합 니까?
       HttpClient 를 사용 하여 크로스 시스템 의 인터페이스 호출 을 실현 합 니 다.
소개:

홈 페이지:http://hc.apache.org/index.html
HttpComponents
HttpClient 는 get,post,put,delete,...등 요청 을 보 낼 수 있 습 니 다.
사용:
좌표 가 져 오기

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.4</version>
</dependency>

//1、  HttpClient  Get  
public class DoGET {
 
  public static void main(String[] args) throws Exception {
    //   Httpclient  ,         
    CloseableHttpClient httpclient = HttpClients.createDefault();
 
    //   HttpGet  ,           
    HttpGet httpGet = new HttpGet("http://www.baidu.com/");
 
    CloseableHttpResponse response = null;
    try {
      //     ,            。    
      response = httpclient.execute(httpGet);
      //          200
      if (response.getStatusLine().getStatusCode() == 200) {
        //     ,    
        String content = EntityUtils.toString(response.getEntity(), "UTF-8");
        System.out.println(content);
      }
    } finally {
      if (response != null) {
        //     
        response.close();
      }
      //      
      httpclient.close();
    }
 
  }
}
 
 
//2、  HttpClient      Get  
public class DoGETParam {
 
  public static void main(String[] args) throws Exception {
    //   Httpclient  
    CloseableHttpClient httpclient = HttpClients.createDefault();
    //   URI  ,        
    URI uri = new URIBuilder("http://www.baidu.com/s").setParameter("wd", "java").build();
    
    //   http GET  
    HttpGet httpGet = new HttpGet(uri);
 
    // HttpGet get = new HttpGet("http://www.baidu.com/s?wd=java");
    
    CloseableHttpResponse response = null;
    try {
      //     
      response = httpclient.execute(httpGet);
      //          200
      if (response.getStatusLine().getStatusCode() == 200) {
        //       
        String content = EntityUtils.toString(response.getEntity(), "UTF-8");
        System.out.println(content);
      }
    } finally {
      if (response != null) {
        response.close();
      }
      httpclient.close();
    }
  }
}
 
 
//3、  HttpClient  POST  
public class DoPOST {
  public static void main(String[] args) throws Exception {
    //   Httpclient  
    CloseableHttpClient httpclient = HttpClients.createDefault();
    //   http POST  
    HttpPost httpPost = new HttpPost("http://www.oschina.net/");
    //          。           
    httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
 
    CloseableHttpResponse response = null;
    try {
      //     
      response = httpclient.execute(httpPost);
      //          200
      if (response.getStatusLine().getStatusCode() == 200) {
        //       
        String content = EntityUtils.toString(response.getEntity(), "UTF-8");
        System.out.println(content);
      }
    } finally {
      if (response != null) {
        response.close();
      }
      //      
      httpclient.close();
    }
 
  }
}
 
 
//4、  HttpClient       POST  
public class DoPOSTParam {
 
  public static void main(String[] args) throws Exception {
    //   Httpclient  
    CloseableHttpClient httpclient = HttpClients.createDefault();
    //   http POST  ,      
    HttpPost httpPost = new HttpPost("http://www.oschina.net/search");
 
    //            ,  post    
    List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
    parameters.add(new BasicNameValuePair("scope", "project"));
    parameters.add(new BasicNameValuePair("q", "java"));
    parameters.add(new BasicNameValuePair("fromerr", "8bDnUWwC"));
    //     form      
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
    //         httpPost   
    httpPost.setEntity(formEntity);
 
    CloseableHttpResponse response = null;
    try {
      //     
      response = httpclient.execute(httpPost);
      //          200
      if (response.getStatusLine().getStatusCode() == 200) {
        //      
        String content = EntityUtils.toString(response.getEntity(), "UTF-8");
        System.out.println(content);
      }
    } finally {
      if (response != null) {
        response.close();
      }
      //      
      httpclient.close();
    }
  }
}
 2.RestTemplate
RestTemplate 는 Spring 이 제공 하 는 Rest 서 비 스 를 방문 하 는 클 라 이언 트 로 RestTemplate 는 원 격 Http 서 비 스 를 편리 하 게 방문 하 는 다양한 방법 을 제공 합 니 다.
HTTP 개발 은 apache 의 HttpClient 로 개 발 된 것 으로 코드 가 복잡 하고 자원 회수 에 도 신경 을 써 야 한다.코드 가 복잡 하고 불필요 한 코드 가 많다.
좌표 가 져 오기

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
RestTemplate 대상 만 들 기

@Configuration//        ,   Spring  
public class RestTemplateConfig {
  /**
   *   RestTemplate  , RestTemplate            Spring
   * @return
   */
  @Bean
  public RestTemplate restTemplate(){
    RestTemplate restTemplate = new RestTemplate();
    //        
    restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
    return restTemplate;
  }
}
RestTempController

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;
 
import javax.annotation.Resource;
 
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
  //  Spring      restTemplate
  @Resource
  private RestTemplate restTemplate;
 
  /**
   *   Get  ,    
   */
  @GetMapping("/{id}")
  public ResponseEntity<String> findById(@PathVariable Integer id){
    //      :  RestTemplate  get  
    ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:8090/goods2/1", String.class);
    System.out.println("entity.getStatusCode():"+entity.getStatusCode());
    System.out.println(entity.getBody());
    return entity;
  }
 
  /**
   *   Post  ,    
   */
  @PostMapping
  public ResponseEntity<String> saveGoods(@RequestBody Goods goods){
    //  RestTemplate      
    /**
     *      :    URI
     *      :  
     *      :     
     */
    ResponseEntity<String> entity = restTemplate.postForEntity("http://localhost:8090/goods2", goods, String.class);
    System.out.println("entity.getStatusCode():"+entity.getStatusCode());
    System.out.println(entity.getBody());
    return entity;
  }
 
  @PutMapping
  public ResponseEntity<String> updateGoods(@RequestBody Goods goods){
    restTemplate.put("http://localhost:8090/goods2",goods);
    return new ResponseEntity<>("    ", HttpStatus.OK);
  }
 
  @DeleteMapping("/{id}")
  public ResponseEntity<String> deleteById(@PathVariable Integer id){
    restTemplate.delete("http://localhost:8090/goods2/"+id);
    return new ResponseEntity<>("    ", HttpStatus.OK);
  }
}
Maven 만 사용 하고 springboot 프레임 워 크 를 사용 하지 않 을 때 pom 파일 에 의존 하 는 가 져 오기 만 하면 됩 니 다.

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
</dependency>
직접 new RestTemplate()대상 이 사용 하면 됩 니 다.
Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기