java.io.FileNotFoundException durante il recupero di un URL con dieresi nel nome del file
-
12-09-2019 - |
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
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