java.io.FileNotFoundException lors de la récupération d'une URL avec trémas dans le nom du fichier
-
12-09-2019 - |
Question
Je suis en train de récupérer une URL avec un tréma dans le nom de fichier, quelque chose comme " http://somesimpledomain.com/some/path/überfile.txt », mais il me donne un java.io.FileNotFoundException. Je soupçonne que le nom de fichier sur le serveur distant est codé dans latin1, bien que mon URL est en UTF8. Mais mes tentatives pour changer le codage de l'URL ont échoué et je ne sais pas comment déboguer davantage. S'il vous plaît aider!
Le code est le suivant:
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
La solution
URL doit être correctement codé. Vous devez savoir ce que charset / encodage de 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:)
Autres conseils
Avez-vous essayé urlencodage il? Par exemple.
%FCberfile