http转成https工具类
工具类代码如下:
点击查看代码
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工具类的更多相关文章
- Java汉字转成汉语拼音工具类
Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
- java Https工具类
import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import ja ...
- http和https工具类 (要注意httpclient版本号和log4j的版本号)
1 工具类 package dd.com; import java.io.IOException; import java.security.cert.CertificateException; im ...
- 把实体bean对象转换成DBObject工具类
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util ...
- java安全HTTPS工具类
import java.io.FileInputStream; import java.security.KeyStore; import java.security.SecureRandom; im ...
- https工具类
import org.apache.commons.lang.StringUtils; import javax.net.ssl.*; import java.io.*; import java.ne ...
- Java-生成缩略图工具类
import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingH ...
- HttpUtil工具类
HttpUtil工具类 /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param params * 请求参数,请求参数应该是name1=val ...
- Android初级教程:对文件和字符串进行MD5加密工具类
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008 点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...
- HttpClinet工具类
一.URL调用 忽略https证书 1.调用 InputStream in = null; try { URL url = new URL( "url地址" ); IgnoreSS ...
随机推荐
- 使用 kubectl 执行 Rolling Update(滚动更新)
Rolling Update滚动更新 通过使用新版本的 Pod 逐步替代旧版本的 Pod 来实现 Deployment 的更新,从而实现零停机.新的 Pod 将在具有可用资源的 Node(节点)上进行 ...
- CentOS 7.9 安装 MySQL 5.7.35
CentOS 7.9 安装 MySQL 5.7.35 1 下载地址:https://downloads.mysql.com/archives/community/ 2 mysql5.7.35 安装包上 ...
- IDEA上关于 jstl导包的问题
IDEA上关于 jstl的问题 在 IDEA上使用 maven创建 web骨架项目,在 pom文件中添加 jstl依赖 <dependency> <groupId>jstl&l ...
- MQ系列6:消息的消费
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前 ...
- 巧用VBA实现:基于多个关键词模糊匹配Excel多行数据
在用Excel处理实际业务中,我们会碰到如下场景: 1.从一堆人名中找到包含某些关键字的名字: 2.从银行流水文件中根据[备注]字段找到包含某些关键字的,统一识别为[手续费业务]等. 这本质说的都是一 ...
- windows C++ call ADB command
提供两种方式: 1.Windows API 2.Windows _popen // ADBHelper.cpp : This file contains the 'main' function. Pr ...
- 集训队互测2016Unknown(UOJ191)
题目链接 前面部分和lzz的题解是一样的. 首先将输入点(x,y)变为(-y,x)然后,只需找一个向量与(-y,x)的点积最大,即找一个向量在(-y,x)上的投影最长.此时所有的点都是在x轴上方的,容 ...
- 函数柯里化实现sum函数
需求 实现sum函数,使其可以传入不定长参数,以及不定次数调用 //示例 console.log(sum(1,2)(3)()) //6 console.log(sum(2,3,4,5)(1,2)(3) ...
- Codeforces Round #751 (Div. 2)/CodeForces1602
CodeForces1602 Two Subsequences 解析: 题目大意 给你一个字符串 \(s\).你需要两个非空字符串 \(a\) 和 \(b\) 并且满足下面的条件: 字符串 \(a\) ...
- Python基础指面向对象:2、动静态方法
面向对象 一.动静态方法 在类中定义的函数有多种特性 1.直接在类中定义函数 再类中直接定义函数,默认绑定给对象,类调用时有几个参数就要传几个参数,对象调用时该函数的第一个参数默认为对象 # 定义 ...