Browse Source
* commit 'ed9018ea16c124ee69d8e41e22d9870858d40116': 无JIRA任务,网页框插件中文乱码 REPORT-11699 网页框插件10 url编码适配master
3 changed files with 110 additions and 21 deletions
@ -0,0 +1,81 @@
|
||||
package com.fr.plugin.form.widget; |
||||
|
||||
import com.fr.third.org.apache.http.NameValuePair; |
||||
import com.fr.third.org.apache.http.message.BasicNameValuePair; |
||||
import com.fr.third.org.apache.http.message.ParserCursor; |
||||
import com.fr.third.org.apache.http.message.TokenParser; |
||||
import com.fr.third.org.apache.http.util.Args; |
||||
import com.fr.third.org.apache.http.util.CharArrayBuffer; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.BitSet; |
||||
import java.util.Collections; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 参照{@link com.fr.third.org.apache.http.client.utils.URLEncodedUtils} |
||||
* 的代码,但是不进行解码操作,传入的 url 可以是未编码的 |
||||
* |
||||
* @see com.fr.third.org.apache.http.client.utils.URLEncodedUtils |
||||
*/ |
||||
@SuppressWarnings("ALL") |
||||
public class URLUtils { |
||||
|
||||
public static List<NameValuePair> parse(String s) { |
||||
if (s == null) { |
||||
return Collections.emptyList(); |
||||
} else { |
||||
CharArrayBuffer buffer = new CharArrayBuffer(s.length()); |
||||
buffer.append(s); |
||||
return parse(buffer, '&', ';'); |
||||
} |
||||
} |
||||
|
||||
public static List<NameValuePair> parse(String s, char... separators) { |
||||
if (s == null) { |
||||
return Collections.emptyList(); |
||||
} else { |
||||
CharArrayBuffer buffer = new CharArrayBuffer(s.length()); |
||||
buffer.append(s); |
||||
return parse(buffer, separators); |
||||
} |
||||
} |
||||
|
||||
public static List<NameValuePair> parse(CharArrayBuffer buf, char... separators) { |
||||
Args.notNull(buf, "Char array buffer"); |
||||
TokenParser tokenParser = TokenParser.INSTANCE; |
||||
BitSet delimSet = new BitSet(); |
||||
int var6 = separators.length; |
||||
|
||||
for (int var7 = 0; var7 < var6; ++var7) { |
||||
char separator = separators[var7]; |
||||
delimSet.set(separator); |
||||
} |
||||
|
||||
ParserCursor cursor = new ParserCursor(0, buf.length()); |
||||
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>(); |
||||
|
||||
while (!cursor.atEnd()) { |
||||
delimSet.set(61); |
||||
String name = tokenParser.parseToken(buf, cursor, delimSet); |
||||
String value = null; |
||||
if (!cursor.atEnd()) { |
||||
int delim = buf.charAt(cursor.getPos()); |
||||
cursor.updatePos(cursor.getPos() + 1); |
||||
if (delim == '=') { |
||||
delimSet.clear(61); |
||||
value = tokenParser.parseValue(buf, cursor, delimSet); |
||||
if (!cursor.atEnd()) { |
||||
cursor.updatePos(cursor.getPos() + 1); |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (!name.isEmpty()) { |
||||
list.add(new BasicNameValuePair(name, value)); |
||||
} |
||||
} |
||||
|
||||
return list; |
||||
} |
||||
} |
Loading…
Reference in new issue