Bonjour,
J'essaye de développer un WebService qui a pour client une classe Java et moteur PHP. Le code PHP est sur un serveur Wamp (donc en local).
Le souci est qu'avec un client codé en PHP ça fonctionne mais pas en Java.
Voici le code en question
voila le code wsdl
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 package ihm; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransport; public class UtilisationKSOAP2 { public StringBuffer tamponEcriture; public UtilisationKSOAP2() { super(); System.out.print("------------------>1"); } public void startApp() { // StringBuffer pour debug this.tamponEcriture = new StringBuffer("Journal des évènements\n"); System.out.print("------------------>2"); this.executerRequeteSOAP(); } public void executerRequeteSOAP () { // partie de la création des objets HTTPTransport et SOAPObject System.out.print("------------------>3"); Object resultatRequeteSOAP = null; SoapObject objetSOAPHello; HttpTransport connexionServeur; SoapSerializationEnvelope envelope ; // nom du service String nomService = "urn:HelloYou"; // url du service String urlService= "http://localhost/dossier%20de%20teste%20gite/moteur.php"; // méthode du service String methodeChoisie = "getHello"; try { this.tamponEcriture.append("création HTTPTransport\n"); // etape 1 création module de connexion HTTP connexionServeur = new HttpTransport ( urlService ); //TODO a modifier lors de la mise en production connexionServeur.debug = true; // etape 1 ok this.tamponEcriture.append("creation HTTPTransport effective\n"); // création objet SOAP objetSOAPHello = new SoapObject (nomService, methodeChoisie ); // ajout des propriétés pour cette méthode objetSOAPHello.addProperty ("prenom","Paul"); objetSOAPHello.addProperty ("nom", "Hochon"); // création d'un objet qui contiendra nos propriétés envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11); envelope.bodyOut = objetSOAPHello;//this.envelope.dotNet = false; // argument utile dans le cas d'un service SOAP .net //envelope.dotNet = true; // création de l'objet SOAP ok this.tamponEcriture.append(" SOAPobjet effective\n"); System.out.print("------------------>4"); } catch (Exception aE) { this.tamponEcriture.append("Exception levée dans SOAPObject\n"); aE.printStackTrace (); System.out.print("------------------>5"); return; } // connexion au serveur try { System.out.print("------------------>6"); System.out.print(tamponEcriture); // invoquation de la méthode sur le serveur connexionServeur.call(null, envelope); System.out.print("------------------>7"); // recuperation de la réponse du serveur resultatRequeteSOAP = envelope.getResponse(); // affichage de la réponse this.tamponEcriture.append("resultat de la requête\n"); this.tamponEcriture.append(resultatRequeteSOAP); System.out.print(tamponEcriture); } catch (Exception aE) { System.out.print("------------------>8"); this.tamponEcriture .append("exception déclenchée sur méthode call\n"); } } public static void main(String[] args) { // TODO code application logic here UtilisationKSOAP2 cl = new UtilisationKSOAP2(); cl.startApp(); } }
le moteur en php
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 <?xml version="1.0"?> <!-- partie 1 : Definitions --> <definitions name="HelloYou" targetNamespace="urn:HelloYou" xmlns:typens="urn:HelloYou" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <!-- partie 2 : Types--> <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:HelloYou"> </xsd:schema> </types> <!-- partie 3 : Message --> <message name="getHelloRequest"> <part name="prenom" type="xsd:string"/> <part name="nom" type="xsd:string"/> </message> <message name="getHelloResponse"> <part name="return" type="xsd:string"/> </message> <!-- partie 4 : Port Type --> <portType name="HelloYouPort"> <!-- partie 5 : Operation --> <operation name="getHello"> <input message="typens:getHelloRequest"/> <output message="typens:getHelloResponse"/> </operation> </portType> <!-- partie 6 : Binding --> <binding name="HelloYouBinding" type="typens:HelloYouPort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getHello"> <soap:operation soapAction="HelloYouAction"/> <input name="getHelloRequest"> <soap:body use="encoded" namespace="urn:HelloYou" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output name="getHelloResponse"> <soap:body use="encoded" namespace="urn:HelloYou" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <!-- partie 7 : Service --> <service name="HelloYouService"> <documentation>Retourne une phrase simple </documentation> <!-- partie 8 : Port --> <port name="HelloYouPort" binding="typens:HelloYouBinding"> <soap:address location="http://localhost/dossier%20de%20teste%20gite/moteur.php"/> </port> </service> </definitions>alors j ai remarque une chose bizzare a la line 113 du fichier 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 <?php // première étape : désactiver le cache lors de la phase de test ini_set("soap.wsdl_cache_enabled", "0"); // on indique au serveur à quel fichier de description il est lié $serveurSOAP = new SoapServer('HelloYou.wsdl'); // ajouter la fonction getHello au serveur $serveurSOAP->addFunction('getHello'); // lancer le serveur if ($_SERVER['REQUEST_METHOD'] == 'POST') { $serveurSOAP->handle(); } else { echo 'désolé, je ne comprends pas les requêtes GET, veuillez seulement utiliser POST'; } function getHello($prenom, $nom) { return 'Hello ' . $prenom . ' ' . $nom; } ?>
En effet, à ce moment là, le code s’arrête et une exception est levée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part connexionServeur.call(null, envelope);
Je suis sous NetBeans et voici ce qui sort en console :
J'ai suivi ce tutoriel http://jp-clair.developpez.com/artic...E/webServices/ qui utilise un client J2ME mais pour mon projet j'ai besoin d'utiliser une application Java normale.run:
------------------>1------------------>2------------------>3------------------>4------------------>6Journal des évènements
création HTTPTransport
creation HTTPTransport effective
SOAPobjet effective
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connector
at org.ksoap2.transport.ServiceConnectionMidp.<init>(Unknown Source)
at org.ksoap2.transport.HttpTransport.getServiceConnection(Unknown Source)
at org.ksoap2.transport.HttpTransport.call(Unknown Source)
at ihm.UtilisationKSOAP2.executerRequeteSOAP(UtilisationKSOAP2.java:112)
at ihm.UtilisationKSOAP2.startApp(UtilisationKSOAP2.java:43)
at ihm.UtilisationKSOAP2.main(UtilisationKSOAP2.java:139)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 6 more
Java Result: 1
GÉNÉRATION TERMINÉE (durée totale* 0 secondes)
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
Merci d'avance pour votre aide.
Partager