Pergunta

Eu estou tentando recuperar uma url com um trema no nome do arquivo, algo como " http://somesimpledomain.com/some/path/überfile.txt ", mas dá-me um java.io.FileNotFoundException. Eu suspeito que o nome do arquivo no servidor remoto é codificado em latin1, embora meu url está em utf8. Mas minhas tentativas de alterar a codificação do url não foram bem sucedidas e eu não sei como depurar-lo ainda mais. Por favor, ajuda!

código é a seguinte:

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

Saudações, Hendrik

Foi útil?

Solução

URL precisa ser devidamente codificado. Você tem que saber o charset / codificação seu servidor está esperando. Você pode tentar isso em primeiro lugar,

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

Se isso não funcionar, substitua "ISO-8859-1" com "UTF-8" e tente novamente.

Se isso não funcionar, arquivo não existe:)

Outras dicas

Você já tentou URLEncoding isso? Por exemplo.

%FCberfile
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top