Frage

Ich versuche, eine URL mit einem Umlaut in den Dateinamen, so etwas wie " http://somesimpledomain.com/some/path/überfile.txt “, aber es gibt mir ein java.io.FileNotFoundException. Ich vermute, dass der Dateiname auf dem Remote-Server ist in latin1 codiert, wenn meine URL in UTF-8 ist. Aber meine Versuche die Codierung der URL zu ändern, waren nicht erfolgreich, und ich weiß nicht, wie es weiter zu debuggen. Bitte helfen Sie!

-Code ist wie folgt:

   HttpURLConnection conn = null;
    try {
       conn = (HttpURLConnection) new URL(uri).openConnection();
       conn.setRequestMethod("GET");
    } catch (MalformedURLException ex) {}
    } catch (IOException ex){}

    // Filter headers
    int i=1;
    String hKey;
    while ((hKey = conn.getHeaderFieldKey(i)) != null) {
        conn.getHeaderField(i);
        i++;
    }

    // Open the file and output streams
    InputStream in = null;
    OutputStream out = null;
    try {
        in = conn.getInputStream();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

    try {
        out = response.getOutputStream();
    } catch (IOException ex) {
}

Viele Grüße, Hendrik

War es hilfreich?

Lösung

URL werden muss, richtig codiert. Sie müssen wissen, was charset / kodieren Ihren Server erwartet. Sie können dies zuerst versuchen,

 String uri = "http://somesimpledomain.com/some/path/" + 
     URLEncoder.encode(filename, "ISO-8859-1");

Wenn das nicht funktioniert, ersetzen Sie "ISO-8859-1" mit "UTF-8" und versuchen Sie es erneut.

Wenn das auch nicht funktioniert, Datei nicht existiert:)

Andere Tipps

Haben Sie versucht, es urlencoding? Z.B.

%FCberfile
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top