【发布时间】:2011-01-30 05:24:19
【问题描述】:
在 Java 中,我需要使用 HTTP Post 向服务器发送请求,但如果 URL 的参数中包含一些特殊字符,则会抛出异常
java.lang.IllegalArgumentException: URLDecoder:非法十六进制字符 转义 (%) 模式 - 对于输入字符串: "&'"
发送数据的代码
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);
String sessionId = RequestUtil.getRequest().getSession().getId();
String data = arg.getData().toString();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair(param1, data));
params.add(new BasicNameValuePair(param2, sessionId));
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse response = (HttpResponse) httpclient.execute(httpPost);
在服务器端,我使用下面的代码来读取信息
String data = request.getParameter(param1);
if (data != null) {
actionArg = new ChannelArg(URLDecoder.decode(data, "UTF-8"));
}
代码工作正常,但如果我输入一些特殊字符,如 [aああ#$%&'(?/.,あああああ],它会抛出异常。我想知道是否有人可以帮助我提示能够编码和解码特殊字符吗?
非常感谢您。
【问题讨论】: