java.io.FileNotFoundException al recuperar una dirección URL con diéresis en el nombre del archivo

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

Pregunta

Estoy tratando de recuperar una URL con una diéresis en el nombre del archivo, algo así como " http://somesimpledomain.com/some/path/überfile.txt ", pero me da un java.io.FileNotFoundException. Sospecho que el nombre del archivo en el servidor remoto está codificada en latin1, aunque mi url está en UTF-8. Pero mis intentos para cambiar la codificación de la URL no tuvieron éxito y que no saben cómo depurar aún más. Por favor, ayuda!

Código es el siguiente:

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

Saludos, Hendrik

¿Fue útil?

Solución

URL necesita ser codificado correctamente. Usted tiene que saber qué juego de caracteres / codificación de su servidor está a la espera. Puede probar este primero,

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

Si eso no funciona, reemplace "ISO-8859-1" con "UTF-8" y vuelve a intentarlo.

Si eso no funciona bien, el archivo no existe:)

Otros consejos

¿Ha tratado URLEncoding ella? P.ej.

%FCberfile
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top