`
liudunxu2
  • 浏览: 30825 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

api param参数转换为hashmap java

 
阅读更多
/**
	 * 根据api参数字符串获取api参数映射
	 * @param url
	 * @return
	 */
	public static HashMap<String, String> GetApiParamMap(String url){
		HashMap<String, String> paramsMap = new HashMap<String, String>();
		if(!StringUtils.isEmpty(url)){
			String[] keyVlauePairAry = url.split("&");
			for (String keyVlauePair : keyVlauePairAry) {
				if (StringUtils.isNotBlank(keyVlauePair)) {
					int equalIndex = keyVlauePair.indexOf('=');
					 if(equalIndex==-1 || equalIndex>=keyVlauePair.length()-1) continue;
					 String titleString = keyVlauePair.substring(0, equalIndex);
					 String titleValueString = keyVlauePair.substring(equalIndex+1,keyVlauePair.length());
					 paramsMap.put(titleString,titleValueString);
				}
			}
		}
		return paramsMap;
	}

netty中的实现

 private Map<String, List<String>> decodeParams(String s) {
        Map<String, List<String>> params = new LinkedHashMap<String, List<String>>();
        String name = null;
        int pos = 0; // Beginning of the unprocessed region
        int i;       // End of the unprocessed region
        char c = 0;  // Current character
        for (i = 0; i < s.length(); i++) {
            c = s.charAt(i);
            if (c == '=' && name == null) {
                if (pos != i) {
                    name = decodeComponent(s.substring(pos, i), charset);
                }
                pos = i + 1;
            } else if (c == '&') {
                if (name == null && pos != i) {
                    // We haven't seen an `=' so far but moved forward.
                    // Must be a param of the form '&a&' so add it with
                    // an empty value.
                    addParam(params, decodeComponent(s.substring(pos, i), charset), "");
                } else if (name != null) {
                    addParam(params, name, decodeComponent(s.substring(pos, i), charset));
                    name = null;
                }
                pos = i + 1;
            }
        }

        if (pos != i) {  // Are there characters we haven't dealt with?
            if (name == null) {     // Yes and we haven't seen any `='.
                addParam(params, decodeComponent(s.substring(pos, i), charset), "");
            } else {                // Yes and this must be the last value.
                addParam(params, name, decodeComponent(s.substring(pos, i), charset));
            }
        } else if (name != null) {  // Have we seen a name without value?
            addParam(params, name, "");
        }

        return params;
    }

    private static String decodeComponent(String s, Charset charset) {
        if (s == null) {
            return "";
        }

        try {
            return URLDecoder.decode(s, charset.name());
        } catch (UnsupportedEncodingException e) {
            throw new UnsupportedCharsetException(charset.name());
        }
    }

    private static void addParam(Map<String, List<String>> params, String name, String value) {
        List<String> values = params.get(name);
        if (values == null) {
            values = new ArrayList<String>(1);  // Often there's only 1 value.
            params.put(name, values);
        }
        values.add(value);
    }


分享到:
评论

相关推荐

    java实现对象转化为get请求的param参数String字符串

    java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...

    lotus domino java代理_获取传递值json

    在 Lotus Domino 环境中,使用 Java 语言编写代理可以获取传递的 URL 参数,并将其转换为 JSON 字符串。本文将详细介绍如何使用 Java 代理获取 URL 参数,并将其转换为 JSON 字符串。 首先,让我们看一下如何在 ...

    API_Demo_Java.zip

    第一步:确保java环境就绪 第二步:展开压缩包,... 替换为自己想下发的动态参数 第三步:打开 APIDemo_java\src\com\miaodiyun\httpapidemo\SmsApiHttpSendTest.java 文件,在编辑器执行RUN操作,查看执行结果

    java web 修改request携带的参数信息

    一个非常棒的程序,用于修改request携带的参数信息。使用了filter等技术。

    java转换万能工具类附带jar包

    一个json相互转换的万能java类(JsonUtil.java), 这个下面就是万能转换类的方法注释,懂java的相信都能看懂。 /** *//** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param ...

    nodejs调用建行互联网银企被扫支付接口加密及验签Demo+java封装jar包

    参数为:flag,strSrcParas,PUBLICKEY,callback。 通过回调函数 得到加密串ccbParam。 nodejs调用java可以通过child_process模块中的spawn()函数实现。 var spawn = require('child_process').spawn;  nodejsJava....

    Java 文件编码转换,将项目下的java文件编码由gbk与utf-8互转

    * 需要转换的文件目录,转换后的文件目录--可以为同一路径 * * @param srcDirPath 需要转换的文件目录 * @param desDirPath 转换后的文件目录 * @param srcCodeStyle 当前文件编码格式 * @param desCodeStyle...

    Java Server Faces API 组件标签 API Reference 速查手册

    Java Server Faces API 组件标签 API Reference 速查手册 HTML_BASIC RenderKit javax.faces.Command javax.faces.Button javax.faces.Link javax.faces.Data javax.faces.Table javax.faces.Form javax.faces...

    CacheManager.java 管理缓存

    import java.util.HashMap; import java.util.Iterator; /** * 文件名:CacheManager.java 管理缓存 * 版本信息:V1.0 * 日期:2013-06-18 * Copyright BDVCD Corporation 2013 * 版权所有 ...

    java万能DAO

    * @param param 参数列表 * @return 修改记录行数 */ public int update(String sql,List param){ int row = -1; Connection conn = null; PreparedStatement update = null; try { conn = DButil.getConn...

    Smali2PsuedoJava:一种将smali代码转换为类java代码的工具

    Smali2PsuedoJava 是一个小型 Java 应用程序,可将 Smali 代码转换为类 Java 代码。 输入:apktool 生成的 Smali 代码输出:PsuedoJava(类 Java 代码) 要使用,请在 CLI 中输入此命令 java -jar Smali2...

    java解析Properties配置文件为对象Bean

    * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws IllegalAccessException * @throws IOException */ public ...

    java字符串替换 代码转换相关源码.rar

    java字符转换类代码,可以实现判断字符串是否为空,并删除首尾空格,字符串替换函数,代码转换,GBK转换为ISO-8859-1,代码转换 从srcCode转换为destCode,代码转换,GBK转换为big5,替换非法字符,标记本身等于分隔...

    调用阿里云API,java(异步实现)DDNS

    用java代码实现了UPDATE,这里是java源代码。‘增删改查’记录,‘改查’实现了目前增有得完善代码,删没删除需求就没添加删的代码。源代码,需要在param.properties文件中填写对应KEYValue值。同时也可以参考我的...

    java-echart.js柱状图、饼状图、折线图

    java-echart.js柱状图、饼状图、折线图 /** * 柱状图 * @param classRoom * @param req * @param resp * @param model * @return */ @RequestMapping(value = "/zhuzhuangtu") public String ...

    Loadrunner中web_reg_save_param的使用详解

    应用范围 在使用Loadrunner进行性能测试时,经常遇到一种情况,需要通过web页面修改某事务的状态。... 参数说明:ParamName:存放得到的动态内容的参数名称listofAttributes:其它属性,包括:Notfound,LB,RB,RelFra

    java二进制,字节数组,字符,十六进制,BCD编码转换

    /* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */

    gson 使用Gson将Java对象转换为JSON

    Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。 Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) from...

    ParamConverterBundle:此捆绑包为Symfony提供了附加的param转换器

    7.0 sensio / framework-extra-bundle〜3.0 安装它的最简单方法是使用Composer: $ composer require zalas/param-converter-bundle:^1.0服务参数转换器服务参数转换器调用已配置的服务,以将请求属性转换为对象。...

    jsp ${param.id}用法.docx

    jsp ${param.id}用法.docx

Global site tag (gtag.js) - Google Analytics