Lo que estoy buscando específicamente es un código en Java que tome un objeto Map
y lo convierta en una cadena de consulta que puedo adjuntar a una URL que devuelvo. Estoy seguro de que hay una biblioteca que hace esto y mucho más, pero no puedo encontrarlo con una búsqueda rápida en Google. Alguien sabe de uno que hará esto?¿Hay algún paquete de Java para manejar las URLs construidas?
Respuesta
Encontré apache httpcomponents como una biblioteca sólida y versátil para tratar con HTTP en Java. Sin embargo, aquí está una clase de muestra, lo que podría ser suficiente para las cadenas de consulta URL edificio:
import java.net.URLEncoder;
public class QueryString {
private String query = "";
public QueryString(HashMap<String, String> map) {
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
query += URLEncoder.encode(pairs.getKey(), "utf-8") + "=" +
URLEncoder.encode(pairs.getValue(), "utf-8");
if (it.hasNext()) { query += "&"; }
}
}
public QueryString(Object name, Object value) {
query = URLEncoder.encode(name.toString(), "utf-8") + "=" +
URLEncoder.encode(value.toString(), "utf-8");
}
public QueryString() { query = ""; }
public synchronized void add(Object name, Object value) {
if (!query.trim().equals("")) query += "&";
query += URLEncoder.encode(name.toString(), "utf-8") + "=" +
URLEncoder.encode(value.toString(), "utf-8");
}
public String toString() { return query; }
}
Uso:
HashMap<String, String> map = new HashMap<String, String>();
map.put("hello", "world");
map.put("lang", "en");
QueryString q = new QueryString(map);
System.out.println(q);
// => "hello=world&lang=en"
¡Se ve bien! Sin embargo, ¡le recomiendo que use genéricos en su código! – notnoop
Voy a aceptar esto, pero yah el método URLEncoder.encode(String s)
está en desuso en favor de uno que también toma un argumento de formato. Aparte de eso, esto es genial, gracias. –
Bialecki
@miku ¿hay una clase en HttpComponents que haga lo que hace tu código? – ArtB
Hay this en línea, por lo que simplemente puede llamar a cualquiera de:
InputStream serverInput = post(URL url, Map parameters);
InputStream serverInput = post(URL url, Map parameters);
InputStream serverInput = post(URL url, Map cookies, Map parameters);
InputStream serverInput = post(URL url, String[] cookies, Object[] parameters);
InputStream serverInput = post(URL url, Object[] parameters).
Se proporciona el código fuente también.
Trate URIBuilder de Apache Http Compoments (HttpClient 4).
En realidad, no toma un mapa, pero es muy adecuado para construir URI.
- 1. ¿Hay algún buen paquete de migración de subprocesos de Java?
- 2. Urls comprimidos de Django: ¿cómo manejar las colisiones?
- 3. ¿Hay algún paquete de seguridad listo para producción basado en Spring-Security para Java?
- 4. ¿Hay algún paquete para mapeo relacional de objetos en R?
- 5. ¿hay algún paquete de prueba de unidad bueno para Excel
- 6. ¿Hay algún programa como LINQPad para Java?
- 7. ¿Hay algún IDE en línea para Java?
- 8. ¿Hay algún "depurador visual" para Java?
- 9. ¿Hay algún marco de complemento para Applets de Java?
- 10. ¿Hay algún paquete todo en uno como XAMPP para Django?
- 11. file_get_contents() para URLs cortas
- 12. ¿Hay algún paquete gratuito para leer, manipular y escribir ASN.1 en Java?
- 13. ¿Hay algún tipo de herramienta de cobertura 'assertion' (para Java)?
- 14. ¿Hay algún recopilador de métricas automatizado para mi proyecto Java?
- 15. ¿Hay algún analizador de respuesta HTTP simple para Java?
- 16. ¿Hay un paquete de Java para probar API RESTful?
- 17. ¿Hay algún otro atributo útil para las propiedades de C#?
- 18. Oracle: ¿algún reemplazo para el paquete DBMS_OUTPUT?
- 19. ¡Las expresiones regulares dinámicamente construidas se están ejecutando extremadamente lento!
- 20. ¿Hay algún convenio de ordenación de métodos Java?
- 21. Urls de paquete y pruebas unitarias. ¿Problema con mi entorno?
- 22. ¿Hay algún buen analizador X12 en Java?
- 23. ¿Hay algún límite para setTimeout?
- 24. ¿Hay algún libtorrent para C#?
- 25. ¿Hay algún módulo como LWP de Perl para Ruby?
- 26. Agregue la clase anotada en Hibernate agregando todas las clases en algún paquete. JAVA
- 27. ¿Hay algún paquete para procesar opciones de línea de comando en R?
- 28. ¿Hay algún "inconveniente" con este enfoque para manejar errores en PHP?
- 29. ¿Hay algún Principio de Clojure?
- 30. ¿Hay algún método que pueda sobrecargar para manejar propiedades indefinidas en JavaScript?
Tuve la misma pregunta: http://stackoverflow.com/questions/1405731/is-there-a-java-method-that-encodes-a-collection-of-parameters-as-a-url-query -com. Sin embargo, no hay una buena respuesta. : -/ –
Vea también http://www.leveluplunch.com/java/examples/construct-build-uri/ y https://www.quora.com/Is-there-an-open-source-URL-manipulation -library-en-Java. – Vadzim
Posible duplicado de [¿Cuál es la forma idiomática de componer una URL o URI en Java?] (Http://stackoverflow.com/questions/883136/what-is-the-idiomatic-way-to-compose-a-url -o-uri-in-java) –