IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème avec Restlet (données Android --> Datastore GAE)


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 78
    Points : 46
    Points
    46
    Par défaut Problème avec Restlet (données Android --> Datastore GAE)
    Bonsoir tout le monde !!!


    après quelques heures de travail en m'inspirant d'un tutoriel Android.
    malheureusement ... et oui ... cela ne fonctionne qu'une seule fois !!!

    ensuite j'obtiens le message d'erreur : Creation failed : Internal Server Error Internal Server Error (500)

    Même message en fermant et en réouvrant l'app android !!!
    Par contre, le redéploiement du site web me permet de regénérer une ligne à partir de l'appli android !!!

    Avez vous une idée du problème ???


    Merci pour votre aide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    pour résumer :

    une fois l'appli web déployée sur l'App engine, je ne peux accéder à la page xxxxxx.appspot.com/rest/experience qu'une seule fois (et voir le résultat de mes données) !!! ensuite j'ai le message suivant :

    Internal Server Error

    You can get technical details here.
    Please continue your visit at our home page.


    une idée ? :-)

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Et si tu clics sur "you can get technical details here" ?

    Concrètement, tu as un problème au niveau de ton serveur dans le traitement de ton envoi. Il faut que tu te concentres sur lui pour le debugging.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Merci Hizin !

    Mais ne sachant pas comment débuguer (la honte), j'ai vraiment du mal à trouver l'erreur !!!

    Si vous voyez quelque chose qui cloche ca me dépannerait fortement !!! je commence à criser :-(


    j'ai les 4 fichiers sur la partie serveur :

    1/ Container.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    package com.morey.appli.server;
    import java.util.ArrayList;
    import java.util.List;
    import com.morey.appli.model.Experience;
    public class Container {
    	public List<Experience> experience_list;
    	public List<Experience> getExperience_list() {
    		return experience_list;
    	}
    	public void setExperience_list(List<Experience> experience_list) {
    		this.experience_list = experience_list;
    	}
    	public Container() {
    		experience_list = new ArrayList<Experience>();
    	}
    	public Container(List<Experience> experience_list) {
    		this.experience_list = experience_list;
    	}
    }
    2/ ExperienceController.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    package com.morey.appli.server;
    import java.util.ArrayList;
    import java.util.List;
    import org.restlet.resource.ServerResource;
    import com.googlecode.objectify.Objectify;
    import com.googlecode.objectify.ObjectifyService;
    import com.googlecode.objectify.Query;
    import com.morey.appli.model.Experience;
    public class ExperienceController extends ServerResource implements
    		ExperienceControllerInterface {
    	public ExperienceController() {
    	}
    	@Override
    	public void create(Experience experience) {
    		ObjectifyService.register(Experience.class);
    		Objectify ofy = ObjectifyService.begin();
    		Experience tp = new Experience();
    		tp.setPrenom(experience.getPrenom());
    		tp.setNom(experience.getNom());
    		tp.setTitre(experience.getTitre());
    		tp.setCategorie(experience.getCategorie());
    		tp.setCommentaire(experience.getCommentaire());
    		tp.setNote(experience.getNote());
    		ofy.put(tp);
    	}
    	@Override
    	public Container getAllExperiences() {
    		Container content = null;
    		List<Experience> experiences = new ArrayList<Experience>();
    		ObjectifyService.register(Experience.class);
    		Objectify ofy = ObjectifyService.begin();
    		Query<Experience> q = ofy.query(Experience.class);
    		for (Experience u : q)
    			experiences.add(u);
    		content = new Container();
    		content.setExperience_list(experiences);
    		return content;
    	}
    }
    3/ ExperienceControllerInterface.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package com.morey.appli.server;
    import org.restlet.resource.Get;
    import org.restlet.resource.Put;
    import com.morey.appli.model.Experience;
    public interface  ExperienceControllerInterface {
    	@Put
    	void create(Experience experience);
    	@Get
    	Container getAllExperiences();
    }
    4/ RestletDispatch.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    package com.morey.appli.server;
    import org.restlet.Application;
    import org.restlet.Restlet;
    import org.restlet.routing.Router;
    public class RestletDispatch extends Application
    {
     @Override
     public synchronized Restlet createInboundRoot()
     {
     final Router router = new Router(getContext());
     router.attach("/experience", ExperienceController.class);
     return router;
     }
    }
    Le fichier servlet.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package com.morey.appli;
    import java.io.IOException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @SuppressWarnings("serial")
    public class servlet extends HttpServlet {
    	public void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws IOException {
    		resp.setContentType("text/plain");
    		resp.getWriter().println("Hello");
    	}
    }
    et le fichier web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
    	<context-param>
    		<param-name>org.restlet.application</param-name>
    		<param-value>com.morey.appli.server.RestletDispatch</param-value>
    	</context-param>
    	<servlet>
    		<servlet-name>appli</servlet-name>
    		<servlet-class>com.morey.appli.servlet
    		</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>appli</servlet-name>
    		<url-pattern>/appli</url-pattern>
    	</servlet-mapping>
    	<servlet>
    		<servlet-name>RestletServlet</servlet-name>
    		<servlet-class>
    			org.restlet.ext.servlet.ServerServlet
    		</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>RestletServlet</servlet-name>
    		<url-pattern>/rest/*</url-pattern>
    	</servlet-mapping>
    	<!-- Default page to serve -->
    	<welcome-file-list>
    		<welcome-file>Site.html</welcome-file>
    	</welcome-file-list>
    </web-app>

    Merci pour toute votre aide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Est-ce que le message que tu as mis initialement
    Internal Server Error

    You can get technical details here.
    Please continue your visit at our home page.
    Est une trace dans le LogCat, ou est-ce que tu vois dans un navigateur ?
    Car je pense que cliquer sur le "here" (s'il est cliquable comme je le suppute) pourrait donner la stacktrace serveur.
    De plus, si tu as accès au serveur, tu peux regarder dans sa console pour chercher une stacktrace.

    Je ne connais que très peu les servlets et assimilés, je ne peux te conseiller que de regarder les traces d'erreurs côté serveur et de remonter de ce côté-là pour cibler le problème.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Merci Hizin !

    l'appli est déployée sur l'App Engine !

    Et lorsque je click sur 'Here', j'obtiens le message suivant (pas très explicite) :
    10.5.1 500 Internal Server Error
    The server encountered an unexpected condition which prevented it from fulfilling the request.

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ah... ça va être un poil plus complexe de comprendre le problème alors.

    Je n'ai pas utilisé Google App Engine, donc je ne peux te donner que des pistes de ce côté-là : il faudrait voir si, dans ta console App Engine, tu as accès a des logs ou des traces serveurs. Si ce n'est pas le cas... à part y aller totalement à tâton en commentant/supprimant les lignes et tentant de comprendre d'où ça vient, mais ça va être long et assez énervant.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Hizin !!!!!!! j'ai trouvé !!! Ma classe ExperienceController avait une coquille :-)

    Merci encore pour ton aide !!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package com.morey.appli.server;
    import java.util.ArrayList;
    import java.util.List;
    import org.restlet.resource.ServerResource;
    import com.googlecode.objectify.Objectify;
    import com.googlecode.objectify.ObjectifyService;
    import com.googlecode.objectify.Query;
    import com.morey.appli.model.Experience;
    public class ExperienceController extends ServerResource implements
    		ExperienceControllerInterface {
             static
            {
    		ObjectifyService.register(Experience.class);
            }
    	public ExperienceController() {
    	}
    	@Override
    	public void create(Experience experience) {
    //		ObjectifyService.register(Experience.class);
    		Objectify ofy = ObjectifyService.begin();
    		Experience tp = new Experience();
    		tp.setPrenom(experience.getPrenom());
    		tp.setNom(experience.getNom());
    		tp.setTitre(experience.getTitre());
    		tp.setCategorie(experience.getCategorie());
    		tp.setCommentaire(experience.getCommentaire());
    		tp.setNote(experience.getNote());
    		ofy.put(tp);
    	}
    	@Override
    	public Container getAllExperiences() {
    		Container content = null;
    		List<Experience> experiences = new ArrayList<Experience>();
    //		ObjectifyService.register(Experience.class);
    		Objectify ofy = ObjectifyService.begin();
    		Query<Experience> q = ofy.query(Experience.class);
    		for (Experience u : q)
    			experiences.add(u);
    		content = new Container();
    		content.setExperience_list(experiences);
    		return content;
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec "Service" sous Android
    Par n2engineer5 dans le forum Android
    Réponses: 0
    Dernier message: 07/07/2011, 22h00
  2. stocker des données sur le datastore GAE
    Par yudMM37 dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 18/03/2010, 16h44
  3. Problème avec XmlDocument [Données non valide]
    Par mobscene dans le forum C#
    Réponses: 1
    Dernier message: 29/08/2007, 23h16
  4. Réponses: 3
    Dernier message: 08/12/2005, 10h38
  5. Problème avec les données binaire
    Par Lachessis dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/08/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo