2011-11-29 16 views
6

Zaimplementowaliśmy połączenie uwierzytelniające HTTP, zakodowane w języku C# z Uri.EscapeDataString().C# Uri.EscapeDatastring() odpowiednik dla Javy

Próbuję utworzyć identyczną aplikację testową java, która wykonuje dokładnie to samo, co wersja C#, ale URLEncoder.encode(string, "UTF-8") dodaje dodatkowe kodowanie, które nie jest takie samo jak funkcja C# Uri.EscapeDataString().

Jaka jest odpowiednia metoda kodowania?

Odpowiedz

2

Najlepszym sposobem znalazłem to zrobić jest użycie URL.toURI().toString() combo:

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

Nie jestem biegły w C#, ale wygląda na to, że potrzebujesz czegoś takiego jak URLEncoder? Spójrzmy na SO 213506 (http://stackoverflow.com/questions/213506/java-net-urlencoder-encodestring-is-deprecated-what-mould-i-use- instead)?

+0

jak wspomniany w pytaniu, używając URLEncoder.encode nie wywołuje ten sam typ zakodowany ciąg. –

+0

Wow przepraszam, że wyraźnie nie czułem się całkowicie, kiedy czytałem twój tekst! –

0

Spójrz na Apache's StringScapeUtils, z pewnością jedna z metod w tej klasie będzie przydatna.

+0

Niestety, dostarczają one tylko standardowe znaki-escape w niektórych formatach, tak naprawdę nie kodują tak, jak robi to 'Uri.EscapeDataString()'. –