/**
* 根据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);
}
分享到:
相关推荐
2. **Action类中的JSON注解**:为了将Action方法的返回值转换为JSON,可以使用`@Result`注解来指定`type="json"`,或者在类级别使用`@Results`注解。例如: ```java @Results({@Result(name="success", type="json")...
- `Integer.parseInt(String)`:将字符串解析为整型数值,需确保字符串能转换为有效的整数。 - `Integer.valueOf(String)`:同样用于字符串到整数的转换,与`parseInt`类似。 - `String.valueOf(int)`:将整数...
创建一个`Map`对象,将数据放入其中,然后将其转换为`DBObject`: ```java Map, String> data = new HashMap(); data.put("key", "value"); DBObject dbObject = new BasicDBObject(data); DBCollection dbcol = ...
《Java API文档详解——以javadoc-6.0.1为例》 在编程领域,Java API(Application Programming Interface)是开发者进行程序设计的重要参考资源,它详细定义了Java语言的各种类、接口、方法以及它们的功能和用法。...
接下来,我们要将图片转换为适合上传的格式,通常是Bitmap或Base64编码的字符串。这里我们使用Bitmap: ```java Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage)...
### IT Java面试题库知识点详解 #### 一、面向对象语言特性 1. **描述一下“Java中面向对象几个典型的面向对象特性”?** - **封装**: 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息...
- Javadoc:使用`/** */`为类、接口和方法生成文档,遵循`@param`、`@return`、`@throws`等标签。 3. **代码结构** - 每个类应有明确的职责,遵循单一职责原则(SRP)。 - 使用接口定义行为,实现类提供具体实现...
- **Map参数**:`MapSqlParameterSource`或`HashMap`作为参数。 - **Java Bean参数**:使用`BeanPropertySqlParameterSource`。 ### 6. **事务管理** JdbcTemplate提供了`executeWithinTransaction`方法,用于在...
它首先创建一个JSONObject,将这些信息存储为键值对,然后将JSON对象转换为字符串。接着,使用`MultiFormatWriter`创建`BitMatrix`对象,其中包含二维码的黑白点信息。最后,将`BitMatrix`转换为`BufferedImage`,并...
这里的`stuff.cpt`文件是通过FineReport设计器生成的模板文件,通过`TemplateImporter`类的`generate`方法可以将其转换为`WorkBook`对象,进而用于进一步的数据处理。 **保存成模板文件** ```java // CPT // 清空...
Android系统内置了TTS引擎,它能够将文本转换为合成语音。开发者可以通过调用相关的API来实现这一功能。首先,需要在应用中添加对应的权限声明,如在AndroidManifest.xml中加入`...
在Android平台上,语音合成(Speech Synthesis)是一种技术,它允许应用程序将文本转换为自然语言的音频输出。这个过程也被称为TTS(Text-to-Speech)。Android提供了内置的支持来实现这个功能,使得开发者能够轻松...
`是预编译的占位符,`params`数组包含了实际参数,`MyRowMapper`是一个自定义的映射器,用于将查询结果转换为Java对象。 接下来,让我们看看如何使用`jdbcTemplate`进行预编译的插入操作。`update()`方法可以用来...
例如,你可以将Java的HashMap、ArrayList等数据结构轻松地转换成JSON字符串,或者将接收到的JSON字符串解析成Java对象。`json-lib`库支持多种版本的JDK,这里的`-jdk15.jar`版本意味着它是为JDK1.5编译的,确保了与...
**解析**:此方法接收一个键值对 Map 作为输入,并将其转换为一系列 `NameValuePair` 对象组成的列表。这些对象将在后续的 HTTP 请求中作为查询字符串或 POST 数据传递。 ##### 2. HTTPS 请求初始化 ```java ...
10. **异常处理**:Spring会捕获JDBC抛出的异常,并转换为更具体的Spring的DataAccessException,便于统一处理。 11. **DAO层设计**:通常,我们会创建一个DAO接口,如`UserDao`,并提供增删改查的方法。然后使用...
TTS服务可以将字符串转换为流式音频,提供多种语言和发音风格供用户选择。首先,需要在AndroidManifest.xml中添加必要的权限: ```xml ``` 2. 初始化TTS引擎: 在应用程序中,我们需要创建一个`TextToSpeech`...
在Android系统中,文本朗读(Text-to-Speech, TTS)是一项重要的辅助功能,它允许应用程序将文本转换为语音输出,对视力障碍或者阅读困难的用户尤其有用。本资源"调用安卓自带文本朗读.zip"可能包含了关于如何在...
JSON插件为Struts 2提供了将Action结果直接转换为JSON对象的能力,这在构建AJAX(Asynchronous JavaScript and XML)应用或需要返回JSON响应的API时非常有用。下面我们将详细探讨Struts 2的JSON支持以及如何配置和...
Java Documentation 是Java编程语言的重要组成部分,它为开发者提供了详尽的API参考和使用指南,帮助他们理解和使用Java类库。这份文档通常包含了类、接口、方法、构造函数等的详细说明,以及示例代码,是Java开发者...