您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)怎么在Spring中遠程調(diào)用HttpClient和RestTemplate,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
導(dǎo)入坐標
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.4</version> </dependency>
//1、使用HttpClient發(fā)起Get請求 public class DoGET { public static void main(String[] args) throws Exception { // 創(chuàng)建Httpclient對象,相當于打開了瀏覽器 CloseableHttpClient httpclient = HttpClients.createDefault(); // 創(chuàng)建HttpGet請求,相當于在瀏覽器輸入地址 HttpGet httpGet = new HttpGet("http://www.baidu.com/"); CloseableHttpResponse response = null; try { // 執(zhí)行請求,相當于敲完地址后按下回車。獲取響應(yīng) response = httpclient.execute(httpGet); // 判斷返回狀態(tài)是否為200 if (response.getStatusLine().getStatusCode() == 200) { // 解析響應(yīng),獲取數(shù)據(jù) String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { // 關(guān)閉資源 response.close(); } // 關(guān)閉瀏覽器 httpclient.close(); } } } //2、使用HttpClient發(fā)起帶參數(shù)的Get請求 public class DoGETParam { public static void main(String[] args) throws Exception { // 創(chuàng)建Httpclient對象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 創(chuàng)建URI對象,并且設(shè)置請求參數(shù) URI uri = new URIBuilder("http://www.baidu.com/s").setParameter("wd", "java").build(); // 創(chuàng)建http GET請求 HttpGet httpGet = new HttpGet(uri); // HttpGet get = new HttpGet("http://www.baidu.com/s?wd=java"); CloseableHttpResponse response = null; try { // 執(zhí)行請求 response = httpclient.execute(httpGet); // 判斷返回狀態(tài)是否為200 if (response.getStatusLine().getStatusCode() == 200) { // 解析響應(yīng)數(shù)據(jù) String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } httpclient.close(); } } } //3、使用HttpClient發(fā)起POST請求 public class DoPOST { public static void main(String[] args) throws Exception { // 創(chuàng)建Httpclient對象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 創(chuàng)建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 { // 執(zhí)行請求 response = httpclient.execute(httpPost); // 判斷返回狀態(tài)是否為200 if (response.getStatusLine().getStatusCode() == 200) { // 解析響應(yīng)數(shù)據(jù) String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } // 關(guān)閉瀏覽器 httpclient.close(); } } } //4、使用HttpClient發(fā)起帶有參數(shù)的POST請求 public class DoPOSTParam { public static void main(String[] args) throws Exception { // 創(chuàng)建Httpclient對象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 創(chuàng)建http POST請求,訪問開源中國 HttpPost httpPost = new HttpPost("http://www.oschina.net/search"); // 根據(jù)開源中國的請求需要,設(shè)置post請求參數(shù) 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")); // 構(gòu)造一個form表單式的實體 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters); // 將請求實體設(shè)置到httpPost對象中 httpPost.setEntity(formEntity); CloseableHttpResponse response = null; try { // 執(zhí)行請求 response = httpclient.execute(httpPost); // 判斷返回狀態(tài)是否為200 if (response.getStatusLine().getStatusCode() == 200) { // 解析響應(yīng)體 String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } // 關(guān)閉瀏覽器 httpclient.close(); } } }
導(dǎo)入坐標
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
創(chuàng)建RestTemplate對象
@Configuration//加上這個注解作用,可以被Spring掃描 public class RestTemplateConfig { /** * 創(chuàng)建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請求,保存數(shù)據(jù) */ @GetMapping("/{id}") public ResponseEntity<String> findById(@PathVariable Integer id){ //發(fā)起遠程請求:通過RestTemplate發(fā)起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請求,保存數(shù)據(jù) */ @PostMapping public ResponseEntity<String> saveGoods(@RequestBody Goods goods){ //通過RestTemplate發(fā)起遠程請求 /** * 第一個參數(shù):遠程地址URI * 第二個參數(shù):數(shù)據(jù) * 第三個參數(shù):返回值類型 */ 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框架時只需要導(dǎo)入依賴到pom文件
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency>
直接new RestTemplate()對象使用即可
關(guān)于怎么在Spring中遠程調(diào)用HttpClient和RestTemplate就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。