Ho provato a utilizzare java.net.URI per manipolare le stringhe di query, ma non sono riuscito nemmeno in un'attività molto semplice come ottenere la stringa di query da un URL e inserirla in un altro.Come utilizzare java.net.URI
Sai come fare questo codice qui sotto lavoro
URI sample = new URI("test?param1=x%3D1");
URI uri2 = new URI(
"http",
"domain",
"/a-path",
sample.getRawQuery(),
sample.getFragment());
Chiama per uri2.toASCIIString()
dovrebbe restituire: http://domain/a-path?param1=x%3D1
ma restituisce: http://domain/a-path?param1=x%253D1
(doppio encoding)
se uso getQuery() al posto di getRawQuery() la stringa di query non è codificata affatto e l'url è simile al seguente: http://domain/a-path?param1=x=1
Buona spiegazione. Quindi l'interfaccia URI è mal progettata (difficilmente vedo alcun motivo per il secondo costruttore). Conosci una classe URI migliore? Come joda-time che sostituisce la classe Date/Calendar? –
No, I do not ... e 'URI' è già un re-make della vecchia classe 'java.net.URL', che ha i suoi problemi. – Jesper