首页>>后端>>Spring->Spring中使用RestTemplate发送Http请求

Spring中使用RestTemplate发送Http请求

时间:2023-11-30 本站 点击:0

作为一个Java开发选手,平时调用外部服务都是通过PRC接口,而这次业务下游只提供Http接口,就有点捉急...

RestTemplate的基本使用

RestTemplate是spring实现的,基于restful风格的http请求模板。使用RestTemplate可以简化请求操作的复杂性,同时规范了代码风格。

Get请求

//将返回结果转换成POJO对象public<T>TgetForObject(Stringurl,Class<T>responseType)//返回Http原生信息(状态码、请求头、body)public<T>ResponseEntity<T>getForEntity(Stringurl,Class<T>responseType)

实践:获取掘金今日格言

@DatapublicclassResult<T>implementsSerializable{privateinterr_no;privateStringerr_msg;privateTdata;}privateStringurlFormat="https://api.juejin.cn/growth_api/v1/get_coder_calendar?aid=%s&uuid=7037140143551399436";privateRestTemplaterestTemplate=newRestTemplate();@TestpublicvoidtestGet(){Stringurl=String.format(urlFormat,"xxx");Resultresult=restTemplate.getForObject(url,Result.class);System.out.println(result);}

掘金今日签到格言:

Result(err_no=0,err_msg=success,data={aphorism=文档书写能力对工程师来说,与代码能力一样重要,should_or_not=宜追查到底})

Post请求

//将返回结果转换成POJO对象public<T>TpostForObject(Stringurl,Objectrequest,Class<T>responseType)//返回Http原生信息(状态码、请求头、body)public<T>ResponseEntity<T>postForEntity(Stringurl,Objectrequest,Class<T>responseType)

实践:掘金自动抽奖

privateStringurlFormat="https://api.juejin.cn/growth_api/v1/lottery/draw?aid=%s&uuid=6994739894300935684&_signature=_02B4Z6wo00901IFbWBAAAIDCsQ1vhfdqjSiBXlyAAEICZNX6.YFOgtHG7h9uKHxa1gwR5xaQh55ytA4gMUM6N9JboQDq5siTnpplhowAUX5HCv6Raat44rC31FskryqQD2bKbOyfkMoyJXev06";privateStringcookie="xxx";privateRestTemplaterestTemplate=newRestTemplate();publicvoidtestPost(){Stringurl=String.format(urlFormat,"2608");//请求头HttpHeadersheaders=newHttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.set(HttpHeaders.COOKIE,cookie);//请求体JSONObjectbody=newJSONObject();HttpEntity<String>request=newHttpEntity(body.toString(),headers);Resultresult=restTemplate.postForObject(urlFormat,request,Result.class);System.out.println(((Map)result.getData()).get("lottery_name"));}

RestTemplate的扩展知识

getForObject()方法无法为请求头hearder传值,可以使用底层通用方法exchange()或excute();

RestTemplate入门博客:

Spring之RestTemplate使用小结

Springboot -- 用更优雅的方式发HTTP请求(RestTemplate详解)

RestTemplate原理博客:

RestTemplate添加超时处理ClientHttpRequestFactory的选择

restTemplate源码解析(目录) # HttpClient连接池的一些思考

RestTemplate开发模板

@ConfigurationpublicclassRestTemplateConfig{@BeanpublicRestTemplaterestTemplate(){returnnewRestTemplate(clientHttpRequestFactory());}@BeanpublicHttpClientConnectionManagerpoolingConnectionManager(){PoolingHttpClientConnectionManagerpoolingConnectionManager=newPoolingHttpClientConnectionManager();//整个线程池中最大连接数poolingConnectionManager.setMaxTotal(200);//路由到某台主机最大并发数poolingConnectionManager.setDefaultMaxPerRoute(100);returnpoolingConnectionManager;}@BeanpublicClientHttpRequestFactoryclientHttpRequestFactory(){HttpComponentsClientHttpRequestFactoryclientHttpRequestFactory=newHttpComponentsClientHttpRequestFactory();HttpClientBuilderhttpClientBuilder=HttpClientBuilder.create();httpClientBuilder.setConnectionManager(poolingConnectionManager());clientHttpRequestFactory.setHttpClient(httpClientBuilder.build());//客户端和服务器建立连接的超时时间clientHttpRequestFactory.setConnectTimeout(1000);//客户端从服务器读取数据的超时时间clientHttpRequestFactory.setReadTimeout(3000);returnclientHttpRequestFactory;}}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/4441.html