中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Spring中遠程調用HttpClient和RestTemplate

發布時間:2021-03-08 11:25:59 來源:億速云 閱讀:315 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在Spring中遠程調用HttpClient和RestTemplate,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一、HttpClient

導入坐標

<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();
    }
  }
}

 二、RestTemplate

導入坐標

<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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滕州市| 隆林| 阳信县| 互助| 安陆市| 平潭县| 南安市| 建昌县| 栾城县| 株洲县| 繁峙县| 合山市| 五家渠市| 乌兰浩特市| 新化县| 鄂托克旗| 永宁县| 肃北| 阜阳市| 报价| 汾西县| 呈贡县| 察哈| 永清县| 临江市| 垦利县| 宁陕县| 称多县| 县级市| 军事| 墨竹工卡县| 陵水| 嘉鱼县| 民权县| 牙克石市| 蒙阴县| 通海县| 三亚市| 宁蒗| 呼伦贝尔市| 阜城县|