还在用httpclient请求接口?那你就out了

HTTP POST接口带参数的HttpClient请求方法和调用 阅读详情

实际项目中免不了要跟其他系统交互,那就会涉及到接口调用,如果是自己本系统的还好,可以通过打jar包引用的方式放到本项目中直接调用。

如果是其他系统的,那就需要通过远程接口调用,而远程接口调用通常使用两种方式调用

  1. 其一是webservice接口,
  2. 其二是rest接口(也就是对方给我们一个http链接地址)
本文就来讲讲如何通过rest接口调用远程服务。

在没有springboot之前,大家会想到使用httpclient去调用,没错,httpclient是一个很好的选择。但是springboot给我们封装了更好的调用,RestTemplate!

先建立如下工程目录结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wtL4iL7K-1625555857979)(https://cdn.guojiang.club/wp-content/uploads/2021/06/20210622055307677.png)]

下面逐一的讲关键类列出:
@RestController
@RequestMapping("demo")

public class DemoController {

    @GetMapping("getUser")
    public void getUser(@RequestParam("name")String name){
        //此处需要远程调用第三方服务 获取user对象
    }

    @GetMapping("saveUser")
    public void getUser(){
        UserDto userDto = new UserDto();
        userDto.setName("resttemplate");
        userDto.setAge(17);
        userDto.setBirthday(new Date());
        //此处需要远程调用第三方服务 将user对象发送给第三方
    }
}
@RestController
@RequestMapping("api")

//此类是模拟第三方提供服务的
public class ApiController {

    //模拟获取数据
    @GetMapping("get")
    public UserDto get(@RequestParam("username")String username){
        System.out.println("从数据库中查询username【"+username+"】的数据");
        UserDto userDto = new UserDto();
        userDto.setName("springboot");
        userDto.setAge(18);
        userDto.setBirthday(new Date());

        return userDto;
    }

    //模拟接收数据保存到数据库
    @GetMapping("save")
    public UserDto save(@RequestBody UserDto userDto) throws JsonProcessingException {
        System.out.println(new ObjectMapper().writeValueAsString(userDto));
        //TODO:保存到数据库
        return userDto;
    }
}
@Data

public class UserDto {

    private String name;
    private Integer age;
    private Date birthday;
}

启动工程,我们先用postman确保如下两个服务是ok的。

get:localhost:8080/demo/get

post:localhost:8080/demo/save

post:localhost:8080/demo/save

为了模拟简单,我们将第三方提供的服务也部署在本工程,也就是localhost:8080/demo/get和localhost:8080/demo/save。

下面我们需要在ApiController里面使用远程调用去发送请求了,怎么搞呢?之前说过了用RestTemplate。

我们在Application中声明一个RestTemplate

@Bean

public RestTemplate restTemplate(){
    return new RestTemplate();
}

然后在DemoController中使用@Resource注入进来

下面我们通过postman调用http://localhost:8080/demo/getUser?name=123看看。

如下是控制台的输出,第一句是ApiController的输出,第二句是上级调用的输出,说明我们已经通过了demoController调用到了另外一个rest服务了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7JEp4bwe-1625555857999)(https://cdn.guojiang.club/wp-content/uploads/2021/06/20210622055833442.png)]

在发送一个post请求:

如下是控制台的输出,第一句也是apiController的输出,第二句是上级调用的输出,同样达到了我们的预期。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQlvgjnm-1625555858005)(https://cdn.guojiang.club/wp-content/uploads/2021/06/20210622055835835.png)]

实际生产实例中还会涉及到超时,如果第三方响应太慢了,则不再等待,

是的。这里RestTemplate也可以做到,我们不是在Application中声明了一个RestTemplate吗?,只需要将如下代码替换即可。

@Bean
public SimpleClientHttpRequestFactory httpClientFactory() {
    SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
    httpRequestFactory.setReadTimeout(1000*5);//读取超时
    httpRequestFactory.setConnectTimeout(1000*5);//链接超时

    return httpRequestFactory;
}

@Bean
public RestTemplate restTemplate(SimpleClientHttpRequestFactory httpClientFactory) {
    RestTemplate restTemplate = new RestTemplate(httpClientFactory);
    return restTemplate;
}

更多java原创阅读:https://javawu.com

【java】httpclient 链接偶尔会 Read timed out 1.概述 今天偶然遇到这个问题: Read timed out。我的设置如下 CloseableHttpClient httpCilent = HttpClients.createDefault(); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(1000) //设置连接超时时间 .setConnectionRequestTimeout(1000) // 设置请求超时时间 阅读详情

相关推荐

SoapHttpClient:用于发送SOAP消息的HttpClient包装器

SoapHttpClient HttpClient轻量级包装(使用IHttpClientFactory ),用于发布消息,使用户可以发送SOAP IHttpClientFactory和标头(如果需要)而无需关心信封。 变更日志 3.0.0 将HttpClient替换为HttpClientFactory。 2.2.1 添加了对取消令牌的支持。 2.2.0 更新的代码库。 将测试项目迁移到.net核心应用。 修复了未发送SOAPAction的错误。 2.1.0 更新到NetStandardLibrary 2.0 修复了扩展方法递归调用自己的错误 2.0.0 主要重构到代码库。

@GetMapping与@RequestMapping的区别

Spring中引进了@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping注解来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。 两者的区别 @GetMapping 用于将HTTP GET请求映射到特定处理程序方法的注解,是一个作为快捷方式的组合注解。@GetMapping它其实相当于@RequestMapping(method = RequestMethod.GET)。 @RequestMapping @Reque

weixin_45797022的博客 4425

HttpClient调用第三方接口

使用httpclient调用公安部接口 并接受返回的字符串转换为图片

springMVC编写服务接口——四种入参方式(@PathVariable、@RequestParam、@RequestBody、HttpServletRequest)

1、@PathVariable rest调用方式,http://localhost:8881/xxxxx/demoServ/testByParam_Path/muyunfei/111 //reset特殊参数,获取路径中的参数,如:http://localhost:8881/xxxxx/demoServ/testByParam_Path/muyunfei/1111 @RequestMapping

牟云飞的博客 5183

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 222

HttpClient使用详解

前言: 在工作中我们会经常碰到调用别的系统接口的问题,如果是http接口的话,我们一般会选择使用HttpClient的来进行接口的调用。这篇文章就讲解下如何使用HttpClient调用别人的接口,主要从两个方面,第一种参数是map格式(post,get请求),第二种参数是json格式(psot,get请求)来展开讲解。 正文: 一、什么是HttpClient? 百度百科解释:HttpCli...

jdk_wangtaida的博客 1969

别再用Excel画波特图了!用LTspice免费仿真软件,5分钟搞定电路传递函数分析

本文介绍了如何利用LTspice免费仿真软件高效绘制波特图,解决传统Excel绘图效率低、精度不足的问题。通过详细的操作步骤和实战案例,展示LTspice在电路传递函数分析中的自动化计算、专业级精度和完整特性展示等优势,帮助工程师快速完成频率响应分析。

weixin_42524226的博客 462

代替httpclient JAVA_HttpClient的替代者 - RestTemplate

需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式客户端和服务端都用到一下的包org.springframeworkspring-context${org.springframework-version}commons-loggingcommons-loggingorg.springframeworkspring-webmvc${org.springframe...

weixin_29660305的博客 1378

最优化方法与数学建模

在本篇博客中,我们将探讨最优化方法在数学建模中的应用。首先,我们将介绍几种常见的最优化方法,如梯度下降、牛顿法和遗传算法。接着,我们将详细阐述这些方法的原理和算法。最后,我们将通过一个数学建模案例,展示如何使用Matlab实现这些方法。本文旨在为大家提供一个清晰的思路,以便更好地理解和应用最优化方法。

YOLO 439

AutoSAR MemMap模块概述及配置参数详解

这个模块是干啥的?它是用来配置Memory Mapping and Compiler Abstraction module。

4508

代替httpclient JAVA_除了HttpClient,Java还有什么类似HttpClient的技术

展开全部更直接一点吧,用jdk自带的urlconnection来实现,无需依赖其他库。下边的e68a84e8a2ad3231313335323631343130323136353331333361313962示例实现了post和get方法。示例如下:Java代码public class HttpUtil {public static final String CHARSET = "UTF-8";p...

weixin_34233720的博客 961

第一讲:halcon模板匹配捆绑测量矩形检测芯片针脚

使用halcon模板匹配捆绑测量矩形,检测位置发生变换的芯片针脚缺陷。

uiopmn1的博客 2995

开源项目相关技术点和功能点

学习java后端可以参考本文进行相关技术点的学习,也可以使用仓库地址的后端代码进行查阅,配套的前端和小程序代码在附件中,可以进行下载调试,有问题请@我

Dream_start_722的博客 1793

2017年全国大学生电子设计竞赛综合测评题目解析——Multisim仿真

1.题目 给定两个单电源的双运放芯片READ2302G芯片(当时记得增益带宽积好像是6M),一片HD74LS74数字芯片双D触发器,需要详细电路图、手写报告,5个波形输出,测频,测幅,8:00公布题目,15:00停止答题,中间可以吃饭(也可以不吃继续做),15:00清场,休息一段时间后开始进场测试,打分。 2.要求 (1)一片运放搭建方波振荡电路,频率 20 KHz,误差 0.1 KHz,幅度 3...

DengFengLai123的博客 2万+

YOLO26涨点改进 | 检测头改进篇 | 利用ASFF改进YOLO26检测头,自适应空间特征融合模块,在所有的目标检测上均有大幅度的涨点效果

本文提出了一种自适应空间特征融合(ASFF)检测头YOLO26,用于解决目标检测中特征金字塔跨尺度特征不一致的问题。ASFF通过学习空间权重图,自适应地融合不同尺度的特征,抑制特征层间的冲突信息。实验表明,该方法在MSCOCO数据集上显著提升了检测精度(45FPS下AP达42.4%),且仅引入极小推理开销。ASFF模块具有可微分性、模型无关性和计算成本低等优势,能够有效改善特征尺度不变性,实现速度与精度的良好平衡。文章详细介绍了ASFF的原理、实现代码及其在YOLO模型中的集成方法。

Ai缝合怪、助力小伙伴高效发论文 555

httpclient请求webservice接口

1.soapui新建一个webservice地址,例如http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl2.3.配置文件编写请求body4.特殊说明请求sapUrl和charset的编写来自如图,saplength是参数长度4.编写TranslatorWebServiceConfigpackage com.tibe...

wjw1639942939的博客 3075

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HttpClient之用CloseableHttpClient发送post请求

使用HttpClient发送请求的一般步骤 (1) 创建HttpClient对象。 (2)创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。 (3) 如果需要发送请求参数,可调用HttpGet同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,可调用

qq_39172525的博客 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HttpClient服务请求的一些用法

由于最近公司在对接银行项目,所以我研究了一下关于httpclient的一下基本用法,我这里使用的是httpclient链接池的方式进行的首先先设置基本参数private static CloseableHttpClient httpClient; private final static Object syncLock = new Object(); private stati...

一个农民工的博客 1288

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

HttpClient 同时支持发送http及htpps请求

1、HttpClient 同时支持发送http及htpps请求 2、HttpClient发送get,put,delete,post请求 3、HttpClient发送http请求 4、HttpClient发送https请求

huanglm_OneWholeLife的博客 1万+

java后台使用HttpClient发起请求,解析返回的数据

//编码格式 public static final String DEFAULT_CONTENT_ENCODING = "UTF-8"; //超时时间 public static final int CONN_TIME_OUT = 20000; //读取超时时间 public static final int SO_TIME_OUT = 2000...

haixin_wu的博客 1771

java后台请求接口超时的处理(二)

一、前端访问后台接口设置超时时间 spring官方提供的配置:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html # SPRING MVC (WebMvcProperties) spring.mvc.async.request-timeout= # ...

牧马人的博客 2万+

httpClient 用于发送HTTP请求的工具类

package util; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.UnsupportedEnc

jzhf2012的专栏 7143

HttpClient 发送请求封装

该类主要用于发送 HTTP 请求,并支持一些高级功能,例如代理设置和内容压缩。

qq165285727的专栏 294
上一篇: 文件这样上传,配置更灵活
下一篇: 腾讯大佬总结的代码重构原则,看完再也不怕面试官问啦!
大盛玩java
博客等级 码龄5年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值