UrlUtils工具类,Java URL工具类,Java URL链接工具类

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年7月15日

http://www.cnblogs.com/fanshuyao/

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Set;
  4. public class UrlUtils {
  5. /**
  6. * 向url链接追加参数
  7. * @param url
  8. * @param params Map<String, String>
  9. * @return
  10. */
  11. public static String appendParams(String url, Map<String, String> params){
  12. if(StrUtils.isBlank(url)){
  13. return "";
  14. }else if(StrUtils.isEmptyMap(params)){
  15. return url.trim();
  16. }else{
  17. StringBuffer sb = new StringBuffer("");
  18. Set<String> keys = params.keySet();
  19. for (String key : keys) {
  20. sb.append(key).append("=").append(params.get(key)).append("&");
  21. }
  22. sb.deleteCharAt(sb.length() - 1);
  23. url = url.trim();
  24. int length = url.length();
  25. int index = url.indexOf("?");
  26. if(index > -1){//url说明有问号
  27. if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?
  28. url += sb.toString();
  29. }else{//情况为:http://wwww.baidu.com?aa=11
  30. url += "&" + sb.toString();
  31. }
  32. }else{//url后面没有问号,如:http://wwww.baidu.com
  33. url += "?" + sb.toString();
  34. }
  35. return url;
  36. }
  37. }
  38. /**
  39. * 向url链接追加参数(单个)
  40. * @param url
  41. * @param name String
  42. * @param value String
  43. * @return
  44. */
  45. public static String appendParam(String url, String name, String value){
  46. if(StrUtils.isBlank(url)){
  47. return "";
  48. }else if(StrUtils.isBlank(name)){
  49. return url.trim();
  50. }else{
  51. Map<String, String> params = new HashMap<String, String>();
  52. params.put(name, value);
  53. return appendParams(url, params);
  54. }
  55. }
  56. /**
  57. * 移除url链接的多个参数
  58. * @param url String
  59. * @param paramNames String[]
  60. * @return
  61. */
  62. public static String removeParams(String url, String... paramNames){
  63. if(StrUtils.isBlank(url)){
  64. return "";
  65. }else if(StrUtils.isEmptyArray(paramNames)){
  66. return url.trim();
  67. }else{
  68. url = url.trim();
  69. int length = url.length();
  70. int index = url.indexOf("?");
  71. if(index > -1){//url说明有问号
  72. if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?
  73. return url;
  74. }else{//情况为:http://wwww.baidu.com?aa=11或http://wwww.baidu.com?aa=或http://wwww.baidu.com?aa
  75. String baseUrl = url.substring(0, index);
  76. String paramsString = url.substring(index + 1);
  77. String[] params = paramsString.split("&");
  78. if(!StrUtils.isEmptyArray(params)){
  79. Map<String, String> paramsMap = new HashMap<String, String>();
  80. for (String param : params) {
  81. if(!StrUtils.isBlank(param)){
  82. String[] oneParam = param.split("=");
  83. String paramName = oneParam[0];
  84. int count = 0;
  85. for(int i=0; i<paramNames.length; i++){
  86. if(paramNames[i].equals(paramName)){
  87. break;
  88. }
  89. count ++;
  90. }
  91. if(count == paramNames.length){
  92. paramsMap.put(paramName, (oneParam.length > 1)?oneParam[1]:"");
  93. }
  94. }
  95. }
  96. if(!StrUtils.isEmptyMap(paramsMap)){
  97. StringBuffer paramBuffer = new StringBuffer(baseUrl);
  98. paramBuffer.append("?");
  99. Set<String> set = paramsMap.keySet();
  100. for (String paramName : set) {
  101. paramBuffer.append(paramName).append("=").append(paramsMap.get(paramName)).append("&");
  102. }
  103. paramBuffer.deleteCharAt(paramBuffer.length() - 1);
  104. return paramBuffer.toString();
  105. }
  106. return baseUrl;
  107. }
  108. }
  109. }
  110. return url;
  111. }
  112. }
  113. public static void main(String[] args) {
  114. /*String a = "http://wwww.baidu.com";
  115. String b = "http://wwww.baidu.com?";
  116. String c = "http://wwww.baidu.com?aa=11";
  117. System.out.println("a="+appendParam(a, "bb", "1"));
  118. System.out.println("b="+appendParam(b, "bb", "1"));
  119. System.out.println("c="+appendParam(c, "bb", "1"));*/
  120. String d = "http://wwww.baidu.com?aa";
  121. String e = "http://wwww.baidu.com?aa=11&bb=22&cc=33";
  122. String f = "http://wwww.baidu.com?aa=11&bb=22&cc=33&dd=";
  123. String g = "http://wwww.baidu.com?aa=11&bb=22&cc=33&dd";
  124. /*List<String> params = new ArrayList<String>();
  125. params.add("aa");
  126. System.out.println("d="+removeParams(d, params));
  127. params.add("bb");
  128. System.out.println("e="+removeParams(e, params));
  129. params.add("cc");
  130. System.out.println("f="+removeParams(f, params));
  131. params.add("dd");
  132. System.out.println("g="+removeParams(g, params));*/
  133. System.out.println("g="+removeParams(g, "cc","aa"));
  134. }
  135. }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年7月15日

http://www.cnblogs.com/fanshuyao/

UrlUtils工具类,Java URL工具类,Java URL链接工具类的更多相关文章

  1. JAVA调用操作javascript (JS)工具类

    import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import ...

  2. java中模拟http(https)请求的工具类

    在java中,特别是java web中,我们经常需要碰到的一个场景是我们需要从服务端去发送http请求,获取到数据,而不是直接从浏览器输入请求网址获得相应.比如我们想访问微信接口,获取其返回信息. 在 ...

  3. Java操作zip压缩和解压缩文件工具类

    需要用到ant.jar(这里使用的是ant-1.6.5.jar) import java.io.File; import java.io.FileInputStream; import java.io ...

  4. Java基础知识强化92:日期工具类的编写和测试案例

    1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...

  5. java调用kettle的job和transfer工具类

    package com.woaiyitiaocai.util; import java.util.Map; import java.util.UUID; import org.apache.log4j ...

  6. 【转】java缩放图片、java裁剪图片代码工具类

    一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...

  7. java 记录对象前后修改的内容(工具类)

    有时候业务需要,需记录一条记录的修改历史,但是不能为完成任务而硬编码,不靠谱 这种情况可以使用java反射来完成 对对象属性的描述可以通过自定义注解来完成,读取里面的属性进而记录修改历史. 在对象的属 ...

  8. 【java工具类】java做的一个xml转Excel工具,基于maven工程

    说明:适合数据库导出为xml时转成Excel 本工具将上传至GitHub:https://github.com/xiaostudy/xiaostudyAPI3 doc4j的maven依赖 <!- ...

  9. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

随机推荐

  1. QSocket类

    QSocket类提供了一个有缓冲的TCP连接. 详情请见…… #include <qsocket.h> 继承了QObject和QIODevice. 所有成员函数的列表. 公有成员 enum ...

  2. WM_CONCAT字符超过4000的处理办法

    参考网址: http://stackoverflow.com/questions/11541383/ordering-by-list-of-strings-in-oracle-sql-without- ...

  3. android WiFi ASSOC_REJECT 流程跟踪

    Android设备在于AP关联时,如果AP返回关联拒绝帧,Android设别会把AP加入黑名单中. 黑名单中的设备将会在扫描时,延时一段时间放在后面处理. 代码以及log基于SDM450, Andro ...

  4. hostapd作为radius服务器

    使用hostapd作为radius服务器,用于企业wifi加密认证. 参考链接: http://www.cnblogs.com/claruarius/p/5902141.html 去网上下载hosta ...

  5. VS自带的dbghelp.h文件 报错

    场景: 编译报错: 解决方法: 在#include <dbghelp.h> 之前 #include <Windows.h>

  6. (转)st(state-threads) coroutine调度

    目录(?)[-] EPOLL和TIMEOUT TIME TIMEOUT Deviation   st(state-threads) https://github.com/winlinvip/state ...

  7. R语言ggplot2 简介

    ggplot2是一个绘制可视化图形的R包,汲取了R语言基础绘图系统(graphics) 和l attice包的优点,摒弃了相关的缺点,创造出来的一套独立的绘图系统: ggplot2 有以下几个特点: ...

  8. 微信小程序开发1_资料收集

    [前言] 小程序 [一.资料] 微信官网 开发文档.工具 等 https://mp.weixin.qq.com/cgi-bin/wx [二] 创建小程序和编辑代码,先安装 开发者工具 ,根据所使用的操 ...

  9. linux中chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  10. u3d animation运用明细

    u3d的动作legacy模式,经测试得出 using UnityEngine; using System.Collections; public class AnimateCon : MonoBeha ...