=======================
©Copyright 蕃薯耀 2021-01-22
http://fanshuyao.iteye.com/
import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; public class UrlUtils { private static Logger log = Logger.getLogger(UrlUtils.class); public static final String QUESTION_MARK = "?"; public static final String AND_MARK = "&"; public static final String EQUAL_MARK = "="; /** * 获取链接的参数 * @param url 链接 * @return */ public static LinkedHashMap<String, String> getParamsMap(String url){ log.info("url=" + url); if(StringUtils.isBlank(url)){ return null; } url = url.trim(); int length = url.length(); int index = url.indexOf(QUESTION_MARK); if(index > -1){//url说明有问号 if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com? return null; }else{ //情况为:http://wwww.baidu.com?aa=11或http://wwww.baidu.com?aa=或http://wwww.baidu.com?aa String baseUrl = url.substring(0, index); String paramsString = url.substring(index + 1); log.info("baseUrl=" + baseUrl); log.info("paramsString=" + paramsString); if(!StringUtils.isBlank(paramsString)){ LinkedHashMap<String, String> paramsMap = new LinkedHashMap<String, String>(); String[] params = paramsString.split(AND_MARK); for (String param : params) { if(!StringUtils.isBlank(param)){ String[] oneParam = param.split(EQUAL_MARK); String paramName = oneParam[0]; if(!StringUtils.isBlank(paramName)){ if(oneParam.length > 1){ paramsMap.put(paramName.trim(), oneParam[1]);//键可以去空格,值不能去空格 }else{ paramsMap.put(paramName.trim(), ""); } } } } return paramsMap; } } } return null; } /** * 向url链接追加参数(会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @param isOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖 * @return */ public static String addParams(String url, LinkedHashMap<String, String> params, boolean isOverride){ if(StringUtils.isBlank(url)){ return ""; }else if(params == null || params.size() < 1){ return url.trim(); }else{ url = url.trim(); int index = url.indexOf(QUESTION_MARK); String baseUrl = ""; if(index > -1){ baseUrl = url.substring(0, index); }else{ baseUrl = url; } LinkedHashMap<String, String> paramsMapInUrl = getParamsMap(url); if(paramsMapInUrl == null){ paramsMapInUrl = new LinkedHashMap<String, String>(); } if(!isOverride){ //移除Url链接已经存在的参数 LinkedHashMap<String, String> newParams = new LinkedHashMap<String, String>(params.size()); for (Map.Entry<String, String> entry : params.entrySet()) { if(!StringUtils.isBlank(entry.getKey())){ newParams.put(entry.getKey().trim(), entry.getValue()); } } for (Map.Entry<String, String> entry : newParams.entrySet()) { for (Map.Entry<String, String> urlEntry : paramsMapInUrl.entrySet()) { if(!StringUtils.isBlank(entry.getKey())){ if(entry.getKey().trim().equals(urlEntry.getKey())){ params.remove(entry.getKey().trim()); } } } } } for (Map.Entry<String, String> entry : params.entrySet()) { paramsMapInUrl.put(entry.getKey().trim(), entry.getValue()); } //重新拼接链接 if(paramsMapInUrl != null && paramsMapInUrl.size() > 0){ StringBuffer paramBuffer = new StringBuffer(baseUrl); paramBuffer.append(QUESTION_MARK); Set<String> set = paramsMapInUrl.keySet(); for (String paramName : set) { paramBuffer.append(paramName).append(EQUAL_MARK) .append(paramsMapInUrl.get(paramName) == null ? "" : paramsMapInUrl.get(paramName)) .append(AND_MARK); } paramBuffer.deleteCharAt(paramBuffer.length() - 1); return paramBuffer.toString(); } return baseUrl; } } /** * 向url链接追加参数(单个) (会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @param isOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖 * @return */ public static String addParam(String url, String name, String value, boolean isOverride){ if(StringUtils.isBlank(url)){ return ""; }else if(StringUtils.isBlank(name)){ return url.trim(); }else{ LinkedHashMap<String, String> params = new LinkedHashMap<String, String>(); params.put(name.trim(), value); return addParams(url, params, isOverride); } } /** * 向url链接追加参数(单个) (会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @return */ public static String addParam(String url, String name, String value){ return addParam(url, name, value, true); } /** * 向url链接追加参数(单个) (不会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @return */ public static String addParamNotExist(String url, String name, String value){ return addParam(url, name, value, false); } /** * 向url链接追加参数(会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @return */ public static String addParams(String url, LinkedHashMap<String, String> params){ return addParams(url, params, true); } /** * 向url链接追加参数(不会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @return */ public static String addParamsNotExist(String url, LinkedHashMap<String, String> params){ return addParams(url, params, false); } /** * 移除url链接的多个参数 * @param url String 链接地址 * @param paramNames String... 参数 * @return */ public static String removeParams(String url, String... paramNames){ if(StringUtils.isBlank(url)){ return ""; }else if(paramNames == null || paramNames.length < 1){ return url.trim(); }else{ url = url.trim(); int length = url.length(); int index = url.indexOf(QUESTION_MARK); if(index > -1){//url有问号 if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com? return url; }else{ LinkedHashMap<String, String> paramsMap = getParamsMap(url); //删除参数 if(paramsMap != null && paramsMap.size() > 0){ for (String paramName : paramNames) { if(!StringUtils.isBlank(paramName)){ paramsMap.remove(paramName.trim()); } } } String baseUrl = url.substring(0, index); //重新拼接链接 if(paramsMap != null && paramsMap.size() > 0){ StringBuffer paramBuffer = new StringBuffer(baseUrl); paramBuffer.append(QUESTION_MARK); Set<String> set = paramsMap.keySet(); for (String paramName : set) { paramBuffer.append(paramName).append(EQUAL_MARK).append(paramsMap.get(paramName)).append(AND_MARK); } paramBuffer.deleteCharAt(paramBuffer.length() - 1); return paramBuffer.toString(); } return baseUrl; } } return url; } } public static void main(String[] args) { /* String a = "http://wwww.baidu.com"; String b = "http://wwww.baidu.com?"; String c = "http://wwww.baidu.com?aa=11"; String d = "http://wwww.baidu.com?aa"; String e = "http://wwww.baidu.com?aa=11&bb=222&cc=33"; String f = "http://wwww.baidu.com?aa=11&bb=222&cc=33&dd="; String g = "http://wwww.baidu.com?aa=111&bb=222&cc=33&dd"; */ /* List<String> params = new ArrayList<String>(); params.add("aa"); System.out.println("d="+removeParams(d, params)); params.add("bb"); System.out.println("e="+removeParams(e, params)); params.add("cc"); System.out.println("f="+removeParams(f, params)); params.add("dd"); System.out.println("g="+removeParams(g, params)); */ /* System.out.println("g="+removeParams(g, "cc","aa","dd")); System.out.println("g2="+removeParams(g, "cc","aa","dd")); System.out.println("d="+removeParams(d, "cc")); System.out.println("d2="+removeParams(d, "aa")); System.out.println("a="+removeParams(a, "aa")); System.out.println("b="+removeParams(b, "aa")); */ /* System.out.println("a==="+addParam(a, "p", "cc")); System.out.println("b==="+addParam(b, "p", "cc")); System.out.println("c==="+addParam(c, "p", "cc")); System.out.println("d==="+addParam(d, "p", "cc")); */ /* System.out.println("g1==="+addParam(g, "bb", "000")); System.out.println("g2==="+addParamNotExist(g, "bb", "000")); */ /* LinkedHashMap<String, String> paramsMap = new LinkedHashMap<String, String>(); paramsMap.put("jj", "j13"); paramsMap.put("kkk", "k1243"); paramsMap.put("mm", ""); paramsMap.put("nn", null); paramsMap.put("bb", "new"); //System.out.println("a==="+addParams(a, paramsMap)); //System.out.println("b==="+addParams(b, paramsMap)); //System.out.println("c==="+addParams(c, paramsMap)); //System.out.println("d==="+addParams(d, paramsMap)); System.out.println("f1==="+addParams(f, paramsMap)); System.out.println("f2==="+addParamsNotExist(f, paramsMap)); */ //System.out.println("g2="+getParamsMap(g)); } }
=======================
©Copyright 蕃薯耀 2021-01-22
http://fanshuyao.iteye.com/
相关推荐
URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接
`RabbitmqUtil` 是一个专门为Java开发者设计的工具类,简化了与RabbitMQ交互的复杂过程,使得开发者能够更快速、更方便地发送和接收消息。 首先,我们来详细了解一下`RabbitmqUtil`工具类的主要功能: 1. **连接...
3. **创建HttpURLConnection对象**:使用`java.net.URL`类打开与目标服务器的连接,并通过`openConnection()`方法获取HttpURLConnection对象。然后,将Socket工厂设置为HTTPS连接的套接字工厂。 ```java URL url = ...
- 类可能包含静态方法,如`sendHttpPost(String url, Map, String> params)`,接受URL和参数,返回响应结果。 4. **实现HTTPS POST请求**: - 首先,需要创建`SSLContext`并初始化,设置信任的证书或忽略证书验证...
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...
JAVA 根据Url 接口 获取文件名称和类型,亲测可用。输入参数地址即可。
本压缩包文件"Url参数获取工具.zip"提供了一个C#语言编写的工具,用于方便地获取和处理URL中的参数,帮助开发者节省时间和提高效率。 URL参数获取是一个常见的需求,比如在HTTP请求中,GET请求的参数通常附在URL...
2. **获取URL内容**:使用Java的`java.net.URL`和`java.net.URLConnection`类来打开和读取URL的内容。确保设置`URLConnection`的`setUseCaches(false)`和`setDoInput(true)`,以便获取最新的网页内容。 3. **处理...
本资源是java开发的常用工具类,包括01.DTD约束文档,02.Schema约束文档,c3p0,commons-dbutils-1.6,commons-io-2.4,commons-pool-1.5.6,mysql-connector-java-5.1.37
Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https...该工具类可以用于各种Java应用程序中,例如Web应用程序、移动应用程序等。
在Java编程中,有时我们需要对一组参数按照字典顺序(ASCII码值从小到大)进行排序,例如在创建签名或构建URL查询字符串时。这里提供了一个名为`createSign`的方法,它接受一个`Map, Object>`类型的参数,并返回一个...
### Java工具类:Java连接各个数据库方法 在Java开发中,连接不同的数据库是常见的需求之一。本文将详细介绍如何通过Java工具类实现与多种数据库的连接,包括Oracle、DB2、SQL Server、Sybase、Informix、MySQL、...
8. **封装工具类**:为了代码的可重用性和可维护性,可以将上述步骤封装成一个工具类方法,接受URL作为参数,返回文件流或处理后的结果。这样,在需要下载文件的地方,只需调用这个工具类即可。 在提供的压缩包文件...
`BLH.java`, `XYZ.java`, `Pxyz.java`可能是处理球面坐标(经纬度、海拔)和直角坐标之间转换的类。 8. **使用说明**:`使用说明.txt`文件应该包含如何运行这些源代码,以及输入和输出格式的详细信息,对于理解和...
Java爬虫链接分析工具是一种利用Java编程语言实现的软件,主要用于网页链接的抓取与分析。这类工具在互联网数据挖掘、网站结构优化、SEO(搜索引擎优化)等领域具有广泛应用。下面将详细阐述Java爬虫和链接分析的...
本资源提供的五个Java工具类涵盖了日期时间处理、数字格式化、参数操作、字符串操作以及数据校验等多个方面,这对于开发人员来说是非常实用的。下面我们将对每个工具类进行详细解释。 1. **日期时间工具类**: 这...
综上所述,这个"java web 修改request携带的参数信息"程序利用Filter技术,对HTTP请求中的参数进行动态修改,以适应特定的需求。在实际开发中,我们需要根据具体业务场景谨慎使用,确保不影响整体应用的稳定性和效率...
首先,你需要在Java类中声明`native`关键字修饰的方法,然后使用`javah`工具生成C/C++头文件,接着编写实现这些方法的C++代码并链接到前面创建的DLL。最后,重新编译和运行Java程序,JNI会自动加载DLL。 - **JNA...
在实际操作中,可能会遇到反爬虫策略,比如动态加载、JavaScript加密等,这时可能需要使用更复杂的工具,如Selenium或Puppeteer来模拟浏览器行为,或者利用浏览器插件如Postman来调试请求,以便找出正确构造请求的...