2011-11-29 53 views
6

Implementamos una conexión de autenticación HTTP, codificada en C# con Uri.EscapeDataString().C# Uri.EscapeDatastring() equivalente para Java

Estoy tratando de hacer una aplicación de prueba de Java idéntica que hace exactamente lo mismo que la versión C#, pero URLEncoder.encode(string, "UTF-8") agrega codificación adicional que no es lo mismo que la función C# Uri.EscapeDataString().

¿Cuál es el método de codificación equivalente?

Respuesta

2

La mejor manera que he encontrado para hacer esto es utilizar el URL.toURI().toString() combinado:

String uriEncodeVariable = "https://localhost:443"; 
URL tempURL = new URL(uriEncodeVariable); 
String uriResult = tempURL.toURI().toString(); 
-1

No soy muy fluido en C# pero parece que necesita algo como URLEncoder? Echemos un vistazo a SO 213506 (http://stackoverflow.com/questions/213506/java-net-urlencoder-encodestring-is-deprecated-what-should-i-use-instead)?

+0

Como se ha dicho en la pregunta, usando URLEncoder.encode no produce el mismo tipo de cadena codificada. –

+0

¡Lo siento mucho porque claramente no estaba totalmente despierto cuando leí su texto! –

0

Echa un vistazo a Apache's StringScapeUtils, seguramente uno de los métodos de esa clase será útil.

+0

Desafortunadamente, estos solo proporcionan formas de cadenas de escape estándar en ciertos formatos, en realidad no codifican la forma en que 'Uri.EscapeDataString()' lo hace. –