Wie verschlüsselt man eine URL in Android?
Ich dachte es wäre so:
final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8");
URL url = new URL(encodedURL);
Wenn ich das oben genannte mache, wird das http://
In urlAsString
durch http%3A%2F%2F
In ersetzt encodedURL
und ich erhalte ein, java.net.MalformedURLException
wenn ich die URL verwende.
Uri.encode(query);
stattdessen verwendet.Ich werde hier einen Vorschlag hinzufügen. Sie können dies tun, ohne externe Bibliotheken abrufen zu müssen.
Probieren Sie es aus:
Sie können sehen, dass in dieser bestimmten URL diese Leerzeichen codiert sein müssen, damit ich sie für eine Anfrage verwenden kann.
Dies nutzt einige Funktionen, die Ihnen in Android-Klassen zur Verfügung stehen. Erstens kann die URL-Klasse eine URL in ihre richtigen Komponenten aufteilen, sodass Sie keine Arbeit zum Suchen / Ersetzen von Zeichenfolgen ausführen müssen. Zweitens nutzt dieser Ansatz die URI-Klassenfunktion, um Komponenten ordnungsgemäß zu maskieren, wenn Sie einen URI über Komponenten anstatt aus einer einzelnen Zeichenfolge erstellen.
Das Schöne an diesem Ansatz ist, dass Sie jede gültige URL-Zeichenfolge verwenden können, ohne dass Sie selbst spezielle Kenntnisse darüber benötigen.
quelle
Für Android würde ich String android.net.Uri.encode (String s) verwenden
Ex/
quelle
Uri.encode("a=1&b=1")
produzierta%3D1%26b%3D1
aber erwarteta=1&b=1
a=1&b=1
als Abfrage eingibt , möchten Sie genau das abfragen.Auch Sie können dies verwenden
Es ist die einfachste Methode
quelle
quelle
Sie können die folgenden Methoden verwenden
oder
Der zweite ist besser als der erste.
quelle
Suchen Sie nach arabischen Zeichen und ersetzen Sie sie durch die UTF-8-Codierung. etwas wie das:
quelle