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.
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.
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
j'ai testé un exemple et voila mon code Web Service:
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
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); } }
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 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; } }
j'ai conclu que le probléme c'est au niveau le pathParam("content") il me retourne toujours null
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)
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager