工具类代码如下:

点击查看代码
package com.astronaut.auction.modules.oss.utils;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List; /**
* @Classname HttpsUtil
* @Description: http转换https工具类
* @Date: 2022/8/9 0009 9:27
* @AUTHOR: 无泪之城
* @Version 1.0
*/
public class HttpsUtil { private static final String HTTPS = "https://"; private static final String HTTP = "http://"; /**
* https 切换 (不包含scheme,http://)
* @param request
* @param url
* @return
*/
public static String httpsSwitch(HttpServletRequest request, String url, String httpsSwitch, String appServer){
if(StringUtils.isBlank(url)){
return url;
}
if ("0".equals(httpsSwitch)) {
return url;
}
String newUrl = "";
String host = request.getHeader("host");
if (StringUtils.isBlank(host)) {
host = appServer.replace("http://","");
}
host = host.replace(":80", "");
newUrl = HTTPS + host + request.getContextPath() + url;
return newUrl;
} /**
* http转成https (包含scheme,http://),url含有端口不替换
* @param url
* @return
*/
public static String httpsSwitch(String url){
if(StringUtils.isBlank(url)){
return url;
}
String newUrl = "";
List<String> newUrlList = new ArrayList<>();
if (url.contains("http://")) {
replaceHttp(url, newUrl, newUrlList);
if (!CollectionUtils.isEmpty(newUrlList)) {
newUrl = newUrlList.get(0);
}
} else {
newUrl = url;
}
return newUrl;
} /**
* 替换http
* @param url
* @param newUrl
* @param newUrlList
* @return
*/
private static void replaceHttp(String url, String newUrl, List<String> newUrlList) {
String scheme = "";
String context = "";
String[] array = url.split("://", 2);
if (array.length > 0) {
scheme = array[0];
context = array[1];
} // 是否含有端口号
boolean containsPort = containsPort(context);
// 不含端口号才替换
if (!containsPort) {
scheme = scheme.replaceFirst("http", HTTPS);
} else {
scheme = HTTP;
}
newUrl = newUrl + scheme;
// 后面url是否含有://
boolean contains = context.contains("://");
if (contains) {
replaceHttp(context, newUrl, newUrlList);
} else {
newUrl = newUrl + context;
newUrlList.add(newUrl);
}
} /**
* 是否含有端口号
* @param url
* @return
*/
private static boolean containsPort(String url) {
if (StringUtils.isNotBlank(url)) {
int firstIndex = url.indexOf("/");
if (firstIndex != -1) {
String remoteAddr = url.substring(0, firstIndex);
if (remoteAddr.contains(":")) {
return true;
}
} else {
if (url.contains(":")) {
return true;
}
}
}
return false;
} }

http转成https工具类的更多相关文章

  1. Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

  2. java Https工具类

    import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import ja ...

  3. http和https工具类 (要注意httpclient版本号和log4j的版本号)

    1 工具类 package dd.com; import java.io.IOException; import java.security.cert.CertificateException; im ...

  4. 把实体bean对象转换成DBObject工具类

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util ...

  5. java安全HTTPS工具类

    import java.io.FileInputStream; import java.security.KeyStore; import java.security.SecureRandom; im ...

  6. https工具类

    import org.apache.commons.lang.StringUtils; import javax.net.ssl.*; import java.io.*; import java.ne ...

  7. Java-生成缩略图工具类

    import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingH ...

  8. HttpUtil工具类

    HttpUtil工具类 /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param params * 请求参数,请求参数应该是name1=val ...

  9. Android初级教程:对文件和字符串进行MD5加密工具类

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008   点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...

  10. HttpClinet工具类

    一.URL调用 忽略https证书 1.调用 InputStream in = null; try { URL url = new URL( "url地址" ); IgnoreSS ...

随机推荐

  1. 关联Prometheus与Alertmanager

    在Prometheus的架构中被划分成两个独立的部分.Prometheus负责产生告警,而Alertmanager负责告警产生后的后续处理.因此Alertmanager部署完成后,需要在Prometh ...

  2. 【JAVA】普通IO数据拷贝次数的问题探讨

    最近看到网上有些文章在讨论JAVA中普通文件IO读/写的时候经过了几次数据拷贝,如果从系统调用开始分析,以读取文件为例,数据的读取过程如下(以缓存I/O为例): 应用程序调用read函数发起系统调用, ...

  3. Codeforces Round #822 (Div. 2) A-F

    比赛链接 A 题解 知识点:贪心. 注意到任意三根木棍的相等最优解是最长减最小,因此从小到大排序,三个三个取,取最小值. 时间复杂度 \(O(n\log n)\) 空间复杂度 \(O(n)\) 代码 ...

  4. C++ 右值引用与一级指针

    将右值引用用于一级指针,在初始化时等号右边必须为右值,有以下几种用法: //方式一:引用一级指针,常规用法 int a = 5; int * &&rrpa = &a; //右值 ...

  5. [Mysql] 页结构

    什么是页? 页是InnoDB中管理数据的最小单元 页与页之间是通过一个双向链表连接起来. 页的组成 FileHeader 上一页下一页的指针 FIL_PAGE_PREV FIL_PAGE_NEXT P ...

  6. Selenium+Python系列(二) - 元素定位那些事

    一.写在前面 今天一实习生小孩问我,说哥你自动化学了多久才会的,咋学的? 自学三个月吧,真的是硬磕呀,当时没人给讲! 其实,学什么都一样,真的就是你想改变的决心有多强罢了. 二.元素定位 这部分内容可 ...

  7. Springboot+vue 实现汽车租赁系统(毕业设计二)(前后端项目分离)

    文章目录 1.系统功能列表 2.管理员端界面 2.1 商家登录界面 2.2 用户信息管理界面 2.3 汽车管理界面 2.4 订单界面 2.5 汽车图形报表 2.6 优惠券新增界面 3.普通用户界面 3 ...

  8. golang的内存管理

    0.1.索引 https://blog.waterflow.link/articles/1663406367769 1.内存管理 内存管理是管理计算机内存的过程,在主存和磁盘之间移动进程以提高系统的整 ...

  9. F118校准(二)-- 操作步骤(使用任意品牌PG点屏,并使用PX01 PG校准F118)

    1. 准备工作 硬件连接: CA310通过USB线材连接PC PX01通过USB线材连接PC F118通过灰排线连接PX01左上角的GPIO扩展口(如下图所示) 启动LcdTools软件,点击&quo ...

  10. 三、Kubernetes调度

    一.Kubernetes调度 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: 公平:如何保证每个节点都 ...