In Java, ho bisogno di utilizzare HTTP Post per inviare la richiesta al server, ma se nel parametro del URL contiene alcuni caratteri speciali si getta sotto EccezioneURL e decodifica carattere speciale in Java
java. lang.IllegalArgumentException: URLDecoder: caratteri esadecimali illegali in fuga (%) pattern - per stringa di input: "& '"
Il codice per inviare i dati
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);
E al lato server, io uso il codice qui sotto per leggere le informazioni
String data = request.getParameter(param1);
if (data != null) {
actionArg = new ChannelArg(URLDecoder.decode(data, "UTF-8"));
}
Il codice funziona correttamente, ma se ho ingresso alcuni caratteri speciali come [a あ あ # $% & '(<>? /., あ あ あ あ あ], genererà un'eccezione. Mi chiedo se qualcuno potrebbe aiutarmi qualche suggerimento per essere in grado di codificare e decodificare caratteri speciali?
Grazie mille in anticipo.
Ho supervisionato una soluzione migliore. I nostri amici di apache hanno StringEscapeUtils (org.apache.commons.lang.StringEscapeUtils). Si prega di controllare se funziona. –