返回顶部
首页 > 资讯 > 精选 >怎么在Spring中远程调用HttpClient和RestTemplate
  • 285
分享到

怎么在Spring中远程调用HttpClient和RestTemplate

2023-06-07 18:06:48 285人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关怎么在spring中远程调用HttpClient和RestTemplate,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、HttpClient导入坐标<d

这篇文章将为大家详细讲解有关怎么在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 {    @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;     @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;  }     @PostMapping  public ResponseEntity<String> saveGoods(@RequestBody Goods goods){    //通过RestTemplate发起远程请求        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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 怎么在Spring中远程调用HttpClient和RestTemplate

本文链接: https://lsjlt.com/news/249918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在Spring中远程调用HttpClient和RestTemplate
    这篇文章将为大家详细讲解有关怎么在Spring中远程调用HttpClient和RestTemplate,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、HttpClient导入坐标<d...
    99+
    2023-06-07
  • RestTemplate怎么调用POST和GET请求
    本文小编为大家详细介绍“RestTemplate怎么调用POST和GET请求”,内容详细,步骤清晰,细节处理妥当,希望这篇“RestTemplate怎么调用POST和GET请求”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • 怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡
    本篇内容介绍了“怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2023-06-29
  • JAVA中的HTTPS接口怎么利用HttpClient进行调用
    JAVA中的HTTPS接口怎么利用HttpClient进行调用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为了避免需要证书,所以用一个类继承DefaultHttpClient...
    99+
    2023-05-31
    java httpclient https
  • C#开发中如何处理远程调用和远程过程调用
    C#开发中如何处理远程调用和远程过程调用,需要具体代码示例引言:随着云计算和分布式系统的快速发展,远程调用和远程过程调用(Remote Procedure Call,简称RPC)在软件开发中变得越来越重要。C#作为一种强大的编程语言,在处理...
    99+
    2023-10-22
    远程过程调用 远程调用 C#开发
  • Kafka和Storm怎么在Spring boot中使用
    这篇文章给大家介绍Kafka和Storm怎么在Spring boot中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用工具及环境配置 java 版本jdk-1.8 编译工具使用IDEA-2017 maven作为项...
    99+
    2023-05-30
  • 怎么在python协程中调用Task
    怎么在python协程中调用Task?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pytho...
    99+
    2023-06-14
  • 如何在PHP中实现RPC远程调用?
    随着互联网的快速发展和云计算技术的广泛应用,分布式系统和微服务架构变得越来越普遍。在这样的背景下,远程过程调用(RPC)成为了一种常见的技术手段。RPC能够使得不同的服务在网络上实现远程调用,从而实现不同服务之间的互联操作,提高代码的复用性...
    99+
    2023-05-14
    PHP rpc 远程调用
  • 在Java中实现远程方法调用(转)
    在Java中实现远程方法调用(转)[@more@]一、Java中的远程方法调用 远程方法调用(Remote Method Invocation, RMI)是Java1.1引入的分布式对象软件包,它的出现简化了在多台机器上的Java应用之间的...
    99+
    2023-06-03
  • 怎么在JFinal中调用存储过程
    本篇文章为大家展示了怎么在JFinal中调用存储过程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。创建储存过程无参数,无返回值--创建名为 PERSON_PROC 的无参数、无返...
    99+
    2023-06-14
  • 怎么在PHP中调用外部程序
    本篇文章为大家展示了怎么在PHP中调用外部程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以...
    99+
    2023-06-14
  • Android在子线程中怎么调用Handler
    这篇文章主要介绍“Android在子线程中怎么调用Handler”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android在子线程中怎么调用Handler”文章能帮助大家解决问题。简介如果是Han...
    99+
    2023-07-04
  • 怎么在Swoole中调用存储过程
    本篇内容介绍了“怎么在Swoole中调用存储过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是存储过程存储过程是数据库管理系统中的...
    99+
    2023-07-05
  • SpringCloud远程服务怎么调用
    这篇文章主要介绍SpringCloud远程服务怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!笔记在微服务中,若想要使用远程调用,需要引入spring-cloud-starter-openfeign(在使用注册...
    99+
    2023-06-21
  • IDEA中怎么配置远程调试
    在IDEA中配置远程调试可以通过以下步骤实现: 打开IDEA,并打开要进行远程调试的项目。 在IDEA的菜单栏中选择“Run” -...
    99+
    2024-04-03
    IDEA
  • Eclipse中怎么进行远程调试
    在Eclipse中进行远程调试,通常需要使用Eclipse自带的远程调试插件或者其他第三方插件。 以下是使用Eclipse自带的远程...
    99+
    2024-04-03
    Eclipse
  • C#中如何使用远程调试和远程部署工具
    标题:C#中远程调试和远程部署工具的使用技巧摘要:本文将介绍如何在C#开发中使用远程调试和远程部署工具。通过远程调试,您可以在另一台计算机上调试代码,而无需在本地机器上运行整个应用程序。远程部署工具则可以帮助您将应用程序部署到远程服务器上。...
    99+
    2023-10-22
    远程调试 C#编程 远程部署
  • Spring框架中怎么调用HanLP分词
    本篇内容介绍了“Spring框架中怎么调用HanLP分词”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!改了...
    99+
    2024-04-02
  • Properties怎么在Spring中使用
    Properties怎么在Spring中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 在 xml 配置文件中使用即自动替换 ${} 里面的值。<bean&nbs...
    99+
    2023-05-30
  • FactoryBean怎么在spring中使用
    FactoryBean怎么在spring中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从SessionFactory说起:在使用SSH集成开发的时候,我们有时候会在app...
    99+
    2023-05-30
    spring factorybean
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作