2009-09-21 4 views
0

J'essaie de récupérer un URL avec un tréma dans le nom de fichier, quelque chose comme "http://somesimpledomain.com/some/path/überfile.txt", mais il me donne une exception java.io.FileNotFoundException. Je soupçonne que le nom de fichier sur le serveur distant est codé en latin1, bien que mon URL soit en utf8. Mais mes tentatives pour changer l'encodage de l'url n'ont pas réussi et je ne sais pas comment le déboguer davantage. S'il vous plaît aider!java.io.FileNotFoundException lors de la récupération d'un URL avec des trémas dans le nom de fichier

code

est la suivante:

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

+0

Est-ce que le serveur répondre avec une 404, si vous essayez d'accéder à la même URL à partir d'un navigateur? –

Répondre

3

L'adresse URL doit être correctement codée. Vous devez savoir quel charset/encodage 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 :)

+0

J'espérais contourner cela, mais vous avez raison: ça a très bien marché! Merci beaucoup! –

0

Avez-vous essayé urlencodage il? Par exemple.

%FCberfile 
Questions connexes