java.io.FileNotFoundException lors de la récupération d'une URL avec trémas dans le nom du fichier

StackOverflow https://stackoverflow.com/questions/1455369

Question

Je suis en train de récupérer une URL avec un tréma dans le nom de fichier, quelque chose comme " http://somesimpledomain.com/some/path/überfile.txt », mais il me donne un java.io.FileNotFoundException. Je soupçonne que le nom de fichier sur le serveur distant est codé dans latin1, bien que mon URL est en UTF8. Mais mes tentatives pour changer le codage de l'URL ont échoué et je ne sais pas comment déboguer davantage. S'il vous plaît aider!

Le code est le suivant:

   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) {
}

Cordialement, Hendrik

Était-ce utile?

La solution

URL doit être correctement codé. Vous devez savoir ce que charset / encodage de votre serveur attend. Vous pouvez essayer cette première,

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

Si cela ne fonctionne pas, remplacer "ISO-8859-1" avec "UTF-8" et essayez à nouveau.

Si cela ne fonctionne pas non plus, le fichier n'existe pas:)

Autres conseils

Avez-vous essayé urlencodage il? Par exemple.

%FCberfile
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top