2011-09-21 13 views
5

Ho bisogno di codificare i valori dei parametri in un URL. Se uso seguente:Codifica i valori dei parametri in un URL con Java

URLEncoder.encode(url, "UTF-8"); 

per un URL simile a questo: http://localhost:8080/...

sarà codificare ": //", ecc Che cosa ho bisogno è la codifica solo per i valori dei parametri a partire dal tutto il Stringa URL Quindi in questo caso:

http://localhost/?q=blah&d=blah

io voglio codificato solo il "bla" nei valori 2 parametri (per i parametri n ovviamente).

Qual è il tuo modo migliore?

Grazie

Randomize

risposta

5

Stai utilizzando URLEncoder in modo sbagliato. Dovresti codificare ogni valore di parametro separatamente e poi assemblare l'url insieme.

Per esempio


String url = "http://localhost/?q=" + URLEncoder.encode ("blah", "UTF-8") + "&d=" + URLEncoder.encode ("blah", "UTF-8"); 

+0

sì lo so che, il problema è che ho ricevuto una URL già "fatto" e non ho modo di cambiare il codice che lo genera – Randomize

+0

Perché allora hai bisogno di codificarlo? Contiene caratteri non ASCII? –

+1

Quindi dovrai creare un 'URL' e ottenere i parametri (o dividere il primo'? 'Se sei sicuro della validità dell'URL), dividerli in' & '(se non lo vuoi codificati), li codificano, quindi li ricostruiscono. –

2

Per un URL del tipo http://localhost/hello/sample?param=bla, è possibile utilizzare questo (dalla classe java.net.URI di Java):

URI uri = new URI("http", "localhost", "/hello/sample", "param=bla", null); 
String url = uri.toASCIIString(); 
+0

in questo modo è necessario preassemblare la stringa di query utilizzando URLEncoder per codificare caratteri speciali. E a quanto pare Randomize ha come input l'intero URL, non le sue parti. –

+0

Bene, l'URL può essere facilmente suddiviso (diviso) in tali parti e passato insieme. – Saket

Problemi correlati