2011-09-17 4 views
1

Je construis une chaîne avec une valeur que je reçois d'une autre activité:Android/java: string url ne fonctionne pas dans HttpGet (url)

Bundle b = getIntent().getExtras(); 

value = b.getString("bundledata"); 

url = "http://dl.dropbox.com/u/xxx/apptextfiles/"; 
url += value; 
url += ".txt"; 

donc, l'url de chaîne ressemble http://dl.dropbox.com/u/xxx/apptextfiles/LFC2.txt

plus tard sur j'essaye de lire le textfile avec HttpGet request = new HttpGet (url) - et le plantage de l'application. La chose étrange est que si j'écris url = "http://dl.dropbox.com/u/xxx/apptextfiles/LFC2.txt" cela fonctionne très bien, mais pas si je le construis comme ci-dessus. En fait, si je prends la valeur d'URL de l'éclipse et la mets dans un navigateur, elle change en http://dl.dropbox.com/u/xxx/apptextfiles/%EF%BB%BFLFC2.txt - pourquoi ?? Cela ressemble à un problème d'encodage étrange? La valeur de chaîne que je reçois de l'autre activité provient également d'un fichier texte en ligne. Quelqu'un a une idée sur la façon de résoudre ce problème?

Répondre

0

Jetez un oeil à http://www.w3schools.com/tags/ref_urlencode.asp

Il semble que le champ value que vous avez dans votre chaîne URL contient des caractères spéciaux - ï , » and ¿

Cest la raison de votre URL s'encodé comme vous avez fait référence. Utilisez un hexeditor ou quelque chose pour vous assurer que votre fichier texte ne contient pas de caractères spéciaux.

+0

J'ai essayé de vérifier la valeur de la chaîne avec 'codedString = URLEncoder.encode (valeur," UTF-8 ");' et encodedString est% EF% BB% BFLFC2. Comment puis-je 'dépouiller' ces% EF% BB% BF cachés, donc je finis seulement avec LFC2? : 0) – bengaard

+0

Vous pourriez simplement dépouiller la chaîne des 3 premiers caractères en faisant une sous-chaîne. Mais vous devriez vraiment essayer de vous assurer que votre source de la chaîne ne contient pas de caractères spéciaux. – Kal

+0

Merci pour votre aide! Je vais juste utiliser 'encodedString = URLEncoder.encode (valeur," UTF-8 "). Substring (9);' pour l'instant, cela fonctionne. Je ne peux pas comprendre d'où vient cet encodage supplémentaire .. – bengaard