¿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.

  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.

Esta

 url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"&param2="+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&param2=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?

  • Org.json.JSONObject no se puede convertir en JSONArray en android
  • Picasso no funciona si url contiene espacio
  • Descarga de archivos en Android
  • ¿Cómo puedo crear una aplicación en la que puedo "compartir" una URL en Android?
  • Lista de solicitudes HTTP desde el teléfono Android
  • Java - ignorar certificado SSL expirado
  • Android Descargar Intent
  • Aplicación de Android: ¿Cómo leer obtener parámetros de un esquema de url personalizado?
  • Codificación de URL en Android
  • ¿Cómo puedo abrir una URL en el navegador web de Android desde mi aplicación?
  • ¿Qué es un filtro de intenciones que solo mostraría una aplicación en el menú compartido al compartir una URL?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.