restTemplate转发Https请求

这篇具有很好参考价值的文章主要介绍了restTemplate转发Https请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码架构
restTemplate转发Https请求

package com.http.controller;

import com.http.RestTemplateConfig;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping
public class httpControler {
    @RequestMapping(value = "two")
    public String two() {
        RestTemplate restTemplate = new RestTemplateConfig().restTemplate();
        String url = "https://www.baidu.com";
        ResponseEntity<String> res = restTemplate .getForEntity(url, String.class);
        return restTemplate.exchange(url, HttpMethod.GET, null, String.class).getBody();
    }
}

package com.http;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        HttpsClientRequestFactory factory = new HttpsClientRequestFactory();
        //单位为ms (部分接口数据量大,读取改为60秒)
        factory.setReadTimeout(60000);
        //单位为ms
        factory.setConnectTimeout(10000);
        return new RestTemplate(factory);
    }
}
package com.http;

import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.http.client.SimpleClientHttpRequestFactory;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import java.net.HttpURLConnection;
import java.security.KeyStore;

/**
 * 继承SimpleClientHttpRequestFactory 根据连接支持实现http和https请求发送
 */
public class HttpsClientRequestFactory extends SimpleClientHttpRequestFactory {
    @Override
    protected void prepareConnection(HttpURLConnection connection, String httpMethod) {
        try {
            if (!(connection instanceof HttpsURLConnection)) {
                //http协议
                super.prepareConnection(connection, httpMethod);
            }
            if ((connection instanceof HttpsURLConnection)) {
                HttpsURLConnection httpsURLConnection = (HttpsURLConnection) connection;
                //https协议
                KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
                //信任任何链接(也就是忽略认证)
                TrustStrategy anyTrustStrategy = (chain, authType) -> true;
                SSLContext ctx = SSLContexts.custom().loadTrustMaterial(trustStore, anyTrustStrategy).build();
                httpsURLConnection.setSSLSocketFactory(ctx.getSocketFactory());
                super.prepareConnection(httpsURLConnection, httpMethod);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

效果
restTemplate转发Https请求文章来源地址https://www.toymoban.com/news/detail-472569.html

到了这里,关于restTemplate转发Https请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RestTemplate发起HTTPS请求Unsupported or unrecognized SSL message 报错解决

    原因:RestTemplate默认是不支持HTTPS请求的,那么如果想使用RestTemplate发送一个HTTPS的请求 ,就需要对证书进行处理,这里记录一下一个可行的方法忽略证书的校验。 使用 RestTemplateBuilder 来构建一个 RestTemplate ,而非使用默认。 requestFactory() 方法用来设置 ClientHttpRequestFactory 。

    2024年02月11日
    浏览(38)
  • nginx 如何将 https 请求转发到 http

    网站之前是 https 的,通过 nginx 设置好了,现在不想用 https 了,但发散到外界的一些网址还是 https 的,此时只能通过 nginx 去转发 https 请求到 http 才能实现之前的链接能正常访问。 具体设置如下: https 的其它设置不需要动,只需要在 server 字段添加一条:

    2024年02月11日
    浏览(57)
  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

    2024年02月08日
    浏览(63)
  • tengine/nginx https请求 转发 http upstream

    当前的互联网应用基本都要支持https协议,而当浏览器头通过https协议将请求发到到负责负载的nginx后,会由当前nginx再以http协议向后端upstream进行请求,之所以这么做是因为https协议的安全性也带来的额外的性能消耗。而源端基本都是在一个内网里面的,对于通讯协议的安全性

    2024年01月23日
    浏览(43)
  • nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头

    今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求的是https还是http,我们的proxy服务器收到的都是80端口上的http。于是联系相关部门了解有没有现成的可用的这样一个字段来获得这个值。公司用的也是标准报头,即X-Fo

    2024年02月16日
    浏览(56)
  • restTemplate发送https请求报错I/O error on POST request for “xxxx“: Remote host terminated the handshake解决

    最近在项目开发中遇到了一个问题,用restTemplate调用https接口的时候一直掉不通,报错I/O error on POST request for “xxxx”: Remote host terminated the handshake;nested exception is javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake 远程主机终止了握手 一开始以为是SSL证书的问题。在百度

    2024年02月11日
    浏览(54)
  • 使用Nginx的upstream实现负载均衡,并配置https,避免Post请求类型转发后变为Get

    Nginx支持负载均衡,可以很方便的帮助我们进行水平扩容,upstream就是nginx中的负载均衡模块 当客户端发送请求时,会先到Nginx,然后Nginx会将请求分发到后台不同的服务器上。 如果后台的服务器群中有一个宕机了,那么Nginx会自动忽略这台服务器,不会将请求再次分发到这台

    2024年02月01日
    浏览(49)
  • 万字长文讲解调用第三方接口,RestTemplate,urlConnection使用详解,java代码模拟postman发送请求

    业务场景 :在日常开发中,经常需要调用第三方接口,例如调用物流接口,此时需要利用urlConnection或者restTemplate模拟postman发送请求,请求支持加header ,设置content-type支持传递json;请求方式get,post,也可以需要传递文件,或者传递文件流; 下面这个例子就包含日常开发中大

    2024年02月05日
    浏览(63)
  • lua使用resty.http做nginx反向代理(https请求,docker容器化部署集群),一个域名多项目转发

    下载使用 链接:https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg 提取码:htay –来自百度网盘超级会员V5的分享 ad_load.lua文件

    2024年01月18日
    浏览(63)
  • RestTemplate通过HTTPS协议访问接口

    RestTemplate 默认不支持https协议,需要支持有两种方式,第一种是忽略认证,第二种是导入证书(比第一种安全) 在这里只实现第一种方式,实现代码如下

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包