Domanda

Sto cercando di recuperare un URL con una dieresi nel nome del file, qualcosa come " http://somesimpledomain.com/some/path/überfile.txt ", ma mi dà un java.io.FileNotFoundException. Ho il sospetto che il nome del file sul server remoto è codificato in latin1, anche se il mio url è in utf8. Ma i miei tentativi per modificare la codifica del URL non hanno avuto successo e non so come eseguire il debug ulteriormente. Si prega di aiutare!

codice è il seguente:

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

Saluti, Hendrik

È stato utile?

Soluzione

URL deve essere opportunamente codificato. Dovete sapere che cosa charset / codifica il server è in attesa. Si può provare questo primo,

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

Se questo non funziona, sostituire "ISO-8859-1" con "UTF-8" e riprovare.

Se questo non funziona neanche, il file non esiste:)

Altri suggerimenti

Hai provato urlencoding esso? Per esempio.

%FCberfile
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top