2014-05-23 5 views
1

J'ai eu une configuration de travail avec volley chargement des images dans l'application à partir d'un serveur AWS S3.Android Volley chargeur asynchrone sur Amazon S3

Puis j'ai créé un nouveau compartiment pour héberger des images pour un serveur de transfert et migré toutes les images dans ce dossier. Le serveur de transfert est configuré pour envoyer l'URL mise à jour à l'application.

à savoir http://production.s3.amazonaws.com/images/thumb/123_myfile.jpg?1400162334 est devenu http://staging.s3.amazonaws.com/images/thumb/123_myfile.jpg?1400162334

Je peux charger l'image dans le nouveau seau de l'application iOS ou tout autre navigateur dans le bureau, mais l'application Android ne charge aucune image de ce seau.

Il chargera quand même une image si je code en dur l'url du seau de production ou n'importe quelle autre image sur Internet, mais pas dans le nouveau compartiment. Rien ne jette aucun message d'erreur non plus.

Les autorisations sur les deux compartiments sont à peu près identiques, la seule différence entre les deux compartiments est que l'un est sous région, l'un dit Oregon et l'autre dit US Standard.

Toutes les idées

+0

Vous devez déboguer votre code et voir où il se bloque. Avez-vous une réponse correcte? Essayez de mettre un point d'arrêt à votre écouteur pour la demande d'image. –

+0

Le journal affiche l'exception d'hôte inconnu s3 –

Répondre

2

Ok, j'ai trouvé le problème.

S3 vous permet d'ajouter le nom de votre seau à différents endroits dans l'URL, donc vous pouvez accéder à la même image de ces deux urls différentes sur le navigateur

http://bucketname.s3.amazonaws.com/images/thumb/image_name.png (DOMAIN_URL)

ou

http://s3.amazonaws.com/bucketname/images/thumb/image_name.png (path_url)

Cela fonctionne correctement dans les deux méthodes si le nom de compartiment correspond à tous les caractères. Cependant, si vous utilisez domain_url, le nom du bucket inclut '_' alors vous obtiendrez des erreurs de volley (ou java).

Hope this helps

0

Juste pour ajouter à la réponse acceptée:

La raison de cette erreur est le nom du godet. Amazon s3 déconseille l'utilisation de "_" dans le nom du compartiment.

Conventions de dénomination des s3 Nom du godet Bucket Naming Conventions