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

API standards et tierces Android Discussion :

Consommer un Service Web RESTfull


Sujet :

API standards et tierces Android

  1. #1
    Membre actif Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Points : 240
    Points
    240
    Par défaut Consommer un Service Web RESTfull
    bonjour,
    j'ai crée un service web Rest full avec java et je veux le consommer en endroid quel sont les instructions necéssaires pour consommer ce service ou SVP donnez moi un exemple merci d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ben... c'est du REST....

    Donc requête HTTP: COMMANDE URI (parametres) (payload)
    Et lire la réponse selon les spécifications du service.....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre actif Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Points : 240
    Points
    240
    Par défaut
    j'ai testé un exemple et voila mon code Web Service:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package serviceWeb;
     
    import javax.ws.rs.core.Context;
    import javax.ws.rs.core.UriInfo;
    import javax.ws.rs.POST;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.Path;
    import javax.ws.rs.GET;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Response;
    import Exception.XMLUtil;
    import com.dao.StatutDAO;
    import com.entity.Statut;
    import javax.ws.rs.QueryParam;
    import org.jboss.weld.context.ejb.Ejb;
     
    /**
     * REST Web Service
     *
     * @author linos
     */
    @Path("/Statut")
    public class StatutsResource {
     
        @Context
        private UriInfo context;
        private XMLUtil xmlUtil =new XMLUtil(); 
         @Ejb
        StatutDAO statutDAO = new StatutDAO();
     
        /**
         * Creates a new instance of StatutsResource
         */
        public StatutsResource() {
        }
     
        /**
         * Retrieves representation of an instance of serviceWeb.StatutsResource
         * @return an instance of java.lang.String
         */
        @GET
        @Produces("application/xml")
        public String getXml() throws UnsupportedOperationException{
            //TODO return proper representation object
            System.out.println("*****************************************");
            return "hello";
        }
     
        /**
         * POST method for creating an instance of StatutResource
         * @param content representation for the new resource
         * @return an HTTP response with content of the created resource
         */
     
        @POST
        @Consumes("application/xml")
        @Produces("application/xml")
     
        public Response postXml(@PathParam("content") String content) {
             System.out.println("content="+content);
            Statut statut =null;
            if ((statut=xmlUtil.getStatutFromXML(content))!=null)
            {
                statutDAO.save(statut);
            return Response.created(context.getAbsolutePath()).build();
            }
            else {return Response.noContent().build();}
        }
     
        /**
         * Sub-resource locator method for {id}
         */
        @Path("{id}")
        public StatutResource getStatutResource(@PathParam("id") String id) {
            return StatutResource.getInstance(id);
        }
    }
    et voila le code Client coté android
    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
    45
    46
    47
    48
     
     
    public class MainActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState){
        	 String tErrorString = "";  
     
        	 HttpURLConnection httpCon = null;  
     
             try{  
                 URL url = new URL("http://10.0.2.2:8080/PFE-war/webresources/Statut");  
                 httpCon = (HttpURLConnection) url.openConnection();  
                 httpCon.setRequestMethod("POST"); 
                 httpCon.setDoOutput(true);
                 httpCon.setDoInput(true);
                 httpCon.setUseCaches(false);
                 httpCon.setAllowUserInteraction(false);
                 httpCon.setRequestProperty("Content-Type",
                     "application/xml");
     
                 OutputStream out = httpCon.getOutputStream();
                 Writer writer = new OutputStreamWriter(out, "UTF-8");
                 writer.write("content");
                 writer.write("=");
                 writer.write(URLEncoder.encode("<Statut><idPation>1</idPation><batCoeur>12.0</batCoeur><hypertension>12.0</hypertension><glucemie>12.2</glucemie><niveauAlert>12</niveauAlert><commentaire>hgjhgj</commentaire></Statut>", "UTF-8"));
                 writer.close();
                 out.close(); 
                 httpCon.connect(); 
                 super.onCreate(savedInstanceState);   
     
                 TextView tv = new TextView(this);
                 tv.setText(httpCon.getResponseMessage());
                 setContentView(tv);  
      } catch (Exception e) {  
                 tErrorString = e.getMessage();  
             }  
     
     
                }
     
     
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
     
     
    }
    lorsque je lance l'umelateur l'exception suivant se déclanche coté serveur glassfish

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    java.lang.NullPointerException
    	at java.io.StringReader.<init>(StringReader.java:50)
    	at Exception.XMLUtil.getDocument(XMLUtil.java:34)
    	at Exception.XMLUtil.getStatutFromXML(XMLUtil.java:211)
    	at serviceWeb.StatutsResource.postXml(StatutsResource.java:67)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:601)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    	at java.lang.Thread.run(Thread.java:722)
     
    WARNING: StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: PWC1406: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception
    java.lang.NullPointerException
    	at java.io.StringReader.<init>(StringReader.java:50)
    	at Exception.XMLUtil.getDocument(XMLUtil.java:34)
    	at Exception.XMLUtil.getStatutFromXML(XMLUtil.java:211)
    	at serviceWeb.StatutsResource.postXml(StatutsResource.java:67)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:601)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    	at java.lang.Thread.run(Thread.java:722)
    j'ai conclu que le probléme c'est au niveau le pathParam("content") il me retourne toujours null

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    C'est donc coté galssfish... Peut être qu'en posant la question coté:
    http://www.developpez.net/forums/f53...-ee/glassfish/
    Non ?

    Comment tu fais tes unit-test coté serveur ? Ça peut être une simple page HTML ou un vrai junit automatisé... Dans tout les cas, il faut vérifier que le "protocol" est bien respecté par le serveur avant de commencer à taper dans le client...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Consommer un service web en pl/SQL
    Par fleo0 dans le forum Services Web
    Réponses: 0
    Dernier message: 06/07/2009, 10h33
  2. Consommer un service web Java en C#-ASP.NET
    Par azerty_123 dans le forum Services Web
    Réponses: 3
    Dernier message: 01/07/2009, 16h45
  3. consommer un service web en java
    Par kat35 dans le forum Services Web
    Réponses: 3
    Dernier message: 14/10/2007, 19h59
  4. [AXIS] Consommer un service web PHP
    Par Nicoin dans le forum Services Web
    Réponses: 7
    Dernier message: 18/02/2006, 16h43
  5. [WebServices] consommer des services web ?
    Par Nycos62 dans le forum Services Web
    Réponses: 3
    Dernier message: 12/04/2005, 13h13

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