Android HttpURLConnection und URL mit Sonderzeichen
Betrachten Sie das folgende code (zum abrufen der Antwort eine HTTP-Anfrage und gibt es). HINWEIS: Dieser code funktioniert in einer normalen Java-Anwendung. Ich habe nur das problem unten aufgeführt, wenn Sie über die code in eine Android-Anwendung.
public class RetrieveHTMLTest {
public static void main(String [] args) {
getListing(args[0);
}
public static void getListing(String stringURL) {
HttpURLConnection conn = null;
String html = "";
String line = null;
BufferedReader reader = null;
URL url = null;
try {
url = new URL(stringURL);
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000);
conn.setReadTimeout(6000);
conn.setRequestMethod("GET");
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
conn.connect();
while ((line = reader.readLine()) != null) {
html = html + line;
}
System.out.println(html);
reader.close();
conn.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
}
}
Wenn ich liefern die URL:
http://somehost/somepath/
Folgende code funktioniert einwandfrei. Aber, wenn ich die URL an:
http://somehost/somepath [ein Kommentar]/
Der code löst eine timeout-Ausnahme ausgelöst, weil der "[" und "]" Zeichen.
Wenn ich die URL an:
http://somehost/somepath%20%5Ba%20comment%5D/
Funktioniert der code einwandfrei. Wieder, weil die "[" und "]" Zeichen nicht vorhanden.
Meine Frage ist, wie bekomme ich die URL:
http://somehost/somepath [ein Kommentar]/
in das folgende format:
http://somehost/somepath%20%5Ba%20comment%5D/
Auch, sollte ich mich weiterhin mit HttpURLConnection unter Android, da es nicht akzeptieren kann, dass eine URL mit Sonderzeichen? Wenn der standard immer konvertieren die URL, bevor Sie mit HttpURLConnection?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
URLEncoder
Klasse :Finden Sie weitere details hier.
Edit : Sie sollten diese Methode nur verwenden, um die Kodierung von Parameterwerten. NICHT codieren Sie die gesamte URL. Zum Beispiel, wenn Sie eine url wie : http://www.somesite.com?param1=value1¶m2=Wert2
dann sollten Sie nur codieren Wert1 und Wert2 und dann die url mit kodierten Versionen dieser Werte.
/
.(
und[
verlassen/
und&
und?
unberührt?http://thisisawebsite.com/path/identifier/image (1).jpg
.dem "+" kann nicht rückgängig