[PhoneGap][JQueryMobile][JSONP]Requête sans effet
Bonjour à tous,
Avant de vous décrire mon problème, voici l'architecture logicielle utilisée
- Eclipse Helios avec le plug-in d'android
- L'OS Windows XP
- Le SDK d'Android - avec notamment l'api 2.2 Froyo
- Jquery (1.4.3) et JqueryMobile (1.0 alpha 1)
- PhoneGap (0.9.2)
- Eclipse Ganymede avec un servlette tournant sur Tomcat 6.0.29 pour le côté serveur
Je voulais intégrer de l'HTML/CSS/Javascript avec l'interface de JQueryMobile au sein de l'émulateur Android. Cette étape a été fructueuse grâce à l'utilisation de PhoneGap et en suivant leur tutoriel ( Tutoriel officiel et rapide de PhoneGap ) . Mais pour l'étape qui suit, à savoir, effectuer une requête Ajax et exploiter le résultat sur la page Web du navigateur de l'émulateur d'Android, je n'ai aucun résultat.
Ce que j'ai réussis à faire, néanmoins, c'est à faire cette chose sur mon PC (donc en laissant tomber le Eclipse Helios mais en lancant quand même le serveur depuis mon instance de Eclipse Ganymede) depuis le navigateur Google Chrome.
Donc, j'ai intégré la permission internet (android.permission.INTERNET), ce qui m'a permis de ne plus bénéficier de l'erreur "SocketException : permission denied" dans le LogCat. Mais ce ne fut pas suffisant.
A noter : j'éffectue un appel de ma servlette sur le port "10.0.2.2:8080/ApplicationEclipse/Servlette" (la fin n'est pas exacte, j'ai volontairement changé les 2 dossiers), et non sur le 127.0.0.1, comme cela est recommandé par Google. Comme cela, j'espère accéder au vrai Localhost de mon serveur Tomcat 6.
Parmi les carences de ma programmation que j'ai remarqué et que je n'ai su résoudre (en regardant entièrement dans le Logcat) (dans le désordre)
- request time failed : java.net.SocketException : Address family not supported by protocol (lancé par SmtpClient)
- Note : attach of thread "Binder Thread #3" failed (lancé par AndroidRuntime)
- Not granting permission android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS to <package1> (où <package1> est là où je définis ma classe héritée de DroidGap) (lancée par PackageManager)
- Force stopping <package1>(où <package1> est là où je définis ma classe héritée de DroidGap)(Lancé par ActivityManager)
La requête effectuée est de type JSONP : je récupère le "callback" utilisateur, et par mon serveur, j'encapsule les données à produire dans le callback récupéré. Par ailleurs, l'adresse invoquee de la Servlette se termine par le paramètre callback=?, afin que mon code JQuery, effectuant un $.getJSON(), puisse traiter le JSONP.
Je teste surtout mon application sur un émulateur Android 2.2 Froyo (API 8)
Il y a peut être des informations dont vous avez besoin que je n'ai pas fournies (je ne voulais pas faire un copier/coller ni du LogCat, ni de mes codes) : n'hésitez-pas à me le signaler.
Je vous remercie d'avance
On a réussi à me dépanner :)
Quelqu'un de mon entourage a finalement réussi à me dépanner :
Dans mon code JQuery, lors de mon appel AJAX, je ne spécifiais pas le port ("http") dans mon adresse.
- Cela fonctionnait sur le PC
- Mais je n'avais aucun résultat sur l'émulateur
Voilà. Je pense que c'est le navigateur de l'emulateur android qui est plus stricte.
En tout cas, merci de m'avoir lu. Et, même si peu de gens seront aussi étourdis que moi pour refaire une erreur pareil, j'espère que cela puisse être utile à qui en a besoin.
Cordialement.
Dans ma situation il me faut les deux
Bonjour jahbromo :)
En fait dans ma situation
- sur le pc je dois mettre http:localhost:8080 et surtout ne pas omettre le port 8080. Dans le cas inverse, mon code ne fonctionne pas.
- sur la version qui doit tourner sur l'émulateur : je dois mettre http://10.0.2.2:8080 car le "localhost" est celui de l'émulateur