URL Encoder para J2ME
Fíjese en esta URL de ejemplo:
http://miservidor.com/miservletpost/?cedula=12.121.121&nombre=juan perez&direccion=direccion de pruebas con espacios y otros caracteres especiales como estos: \?
Notese que tiene espacios, caracteres especiales en el campo de ejemplo 'direccion' (caracteres ":\?"), que pueden ser confundidos con caracteres reservados propios del protocolo http u otros del sistema operativo o del explorador de internet. Esta url de pruebas no podrá ser enviada a través de una conexión Http sin dañarse.
La dirección de pruebas que hemos puesto es y debe ser almacenada así en el servidor (en un caso de ejemplo):
"direccion de pruebas con espacios y otros caracteres especiales como estos: \?"
Por tanto para que pueda llegar así al servidor de destino con el propósito de ser almacenada entonces debe ser codificada para ser transportada seguramente a través de una conexión http.
Aquí es donde entra la función URLEncode, esta función está disponible fácilmente en el paquete java.lang de J2EE o J2SE, pero no tan fácilmente en J2ME.
Para resolver, se codifica la URL, y esta quedaría así:
http://miservidor.com/miservletpost/?cedula=12.121.121&nombre=juan%20perez&direccion=direccion%20de%20pruebas%20con%20espacios%20y%20otros%20caracteres%20especiales%20como%20estos:%20%5C?
Esta URL si es segura y puede ser transportada al servidor, en donde deberá ser decodificada. En php se puede decodificar fácilmente usando una llamada a urldecode("cadena codficada").
Como referencia puede revisar:
PHP:
http://php.net/manual/es/function.urlencode.php
http://www.php.net/manual/es/function.urldecode.php
JAVA:
http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
J2ME Información:
http://developers.sun.com/mobility/midp/ttips/HTTPPost/
Para JavaME, use la siguiente rutina:
static public String urlEncode(String sUrl)
{
StringBuffer urlOK = new StringBuffer();
for(int i=0; i<sUrl.length(); i++)
{
char ch=sUrl.charAt(i);
switch(ch)
{
case '<': urlOK.append("%3C"); break;
case '>': urlOK.append("%3E"); break;
case '/': urlOK.append("%2F"); break;
case ' ': urlOK.append("%20"); break;
case ':': urlOK.append("%3A"); break;
case '-': urlOK.append("%2D"); break;
default: urlOK.append(ch); break;
}
}
return urlOK.toString();
}
Este comentario ha sido eliminado por el autor.
ResponderEliminar