¿Cómo puedo pasar varios parámetros en la URL?
Estoy tratando de averiguar cómo pasar varios parámetros en una URL. Quiero pasar la latitud y la longitud de mi clase android a un servlet java. ¿Cómo puedo hacer eso?
URL url; double lat=touchedPoint.getLatitudeE6() / 1E6; double lon=touchedPoint.getLongitudeE6() / 1E6; url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+lon);
En este caso, la salida (escrita en archivo) es 28.53438677.472097. Esto está funcionando, pero quiero pasar la latitud y la longitud en dos parámetros separados para que mi trabajo en el lado del servidor se reduce. Si no es posible, ¿cómo puedo por lo menos agregar un espacio entre lat & lon para que pueda utilizar la clase tokenizer para obtener mi latitud y longitud. Traté de seguir la línea, pero en vano.
- No puede abrir la URL de twitter en la vista web de android
- Android Cómo mostrar vínculos en la vista web de esta manera?
- Cómo obtener URL de enlace en Android WebView con HitTestResult para una imagen vinculada (y no la URL de imagen) con Longclick
- Android: ¿Cómo usar la clase de gestor de descargas?
- ¿Cómo abrir un sitio web cuando se hace clic en un botón en la aplicación de Android?
url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+" "+lon); output- Nothing is written to file url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"&?param2="+lon); output- 28.534386 (Only Latitude) url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"?param2="+lon); output- 28.532577?param2=77.502996
Mi código de servlet es el siguiente:
req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); final String par1 = req.getParameter("param1"); final String par2 = req.getParameter("param2"); FileWriter fstream = new FileWriter("C:\\Users\\Hitchhiker\\Desktop\\out2.txt"); BufferedWriter out = new BufferedWriter(fstream); out.write(par1); out.append(par2); out.close();
También quería saber que esta es la forma más segura y segura de pasar los datos del dispositivo android al servidor.
- Cómo enviar una cadena que contiene% símbolo a webservice usando HttpPost en android?
- Java, android, resolver un url, obtener redireccionado uri
- Solicitud por lotes utilizando Retrofit
- Enviar URL a través de NFC para ser abierto por el navegador
- Cargar archivo local y obtener Error cromo desconocido: -6
- HttpURLConnection de Android y URL con caracteres especiales
- webview abre navegador predeterminado, no sé dónde poner código
- Android FileNotFoundException obtener arrojado de URL.openStream ()
Esta
url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"¶m2="+lon);
debe trabajar. ¿Por alguna extraña razón 1 , usted necesita ?
Antes del primer parámetro y &
antes de los siguientes.
Usando un parámetro compuesto como
url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"_"+lon);
También funcionaría, pero seguramente no es agradable. No puedes usar un espacio allí, ya que está prohibido en una URL, pero puedes codificarlo como %20
o +
(pero esto es incluso peor).
1 ¿Dice eso ?
Separa el camino y los parámetros y que separa los parámetros entre sí no explica nada sobre la razón. Algunos RFC dice "usar? Allí y & allí", pero no puedo ver por qué no elegir el mismo carácter.
No sé mucho sobre Java, pero los argumentos de consulta de URL deben estar separados por "&", no por "?"
http://tools.ietf.org/html/rfc3986 es un buen lugar para referencia utilizando "sub-delim" como palabra clave. http://en.wikipedia.org/wiki/Query_string es otra buena fuente.
Puede pasar varios parámetros como " ?param1=value1¶m2=value2
"
Pero no es seguro. Es vulnerable al Cross Site Scripting (XSS) Attack
.
Su parámetro puede ser simplemente reemplazado por un script.
Echa un vistazo a este artículo y artículo
Puede hacerlo seguro mediante el uso de API de StringEscapeUtils
static String escapeHtml(String str) Escapes the characters in a String using HTML entities.
Incluso usar https
url para la seguridad sin las precauciones anteriores no es una buena práctica.
Echa un vistazo a la pregunta relacionada SE:
URLEncoder.encode (string, "UTF-8") es una validación deficiente?
- ¿Se puede despedir un evento cuando se desactiva Android Dialog?
- Falla de segmentación del emulador de Android