Bonjour,
je rencontre des problèmes lors de l'utilisation d'un webservice SOAP en php avec une appli android utilisant KSoap2.
(aucun problème pour l'utilisation du WS via client PHP)
Code java
code 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 String METHOD_NAME = "login"; String NAMESPACE = "urn:exemple"; String URL = "http://192.168.1.68/WS/user/user.php"; String SOAP_ACTION = "urn:log_instanceAction#login"; try { SoapObject request = new SoapObject (NAMESPACE, METHOD_NAME); // request.addProperty("tns", map); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); androidHttpTransport.call(SOAP_ACTION, envelope); } catch (Exception e) { Log.e("SOAP","ERROR web Service Load", e); }
le fichier WSDL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $serversoap=new SoapServer($config->WS_USER_URL); $serversoap->setClass("User"); $serversoap->handle(); //la fonction login de la classe User commence par "return true;"
Erreur rencontré :
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 <?xml version='1.0' encoding='UTF-8'?> <definitions name="exemple" targetNamespace="urn:exemple" xmlns:typens="urn:exemple" 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/"> <message name="login"> <wsdl:part name="name" element="tns:array"/> </message> <message name="loginResponse"> <part name="loginReturn"/> </message> <portType name="log_instancePortType"> <operation name="login"> <input message="typens:login"/> <output message="typens:loginResponse"/> </operation> </portType> <binding name="log_instanceBinding" type="typens:log_instancePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="login"> <soap:operation soapAction="urn:log_instanceAction"/> <input> <soap:body namespace="urn:exemple" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body namespace="urn:exemple" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="loginService"> <port name="log_instancePort" binding="typens:log_instanceBinding"> <soap:address location="http://192.168.1.68/WS/user/user.php"/> </port> </service> </definitions>
apache/error.log => rien
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 12-06 14:47:47.038: E/SOAP(329): ERROR web Service Load 12-06 14:47:47.038: E/SOAP(329): org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}SOAP-ENV:Fault>@3:32 in java.io.InputStreamReader@4054acc8) 12-06 14:47:47.038: E/SOAP(329): at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273) 12-06 14:47:47.038: E/SOAP(329): at org.kxml2.io.KXmlParser.require(KXmlParser.java:1424) 12-06 14:47:47.038: E/SOAP(329): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:138) 12-06 14:47:47.038: E/SOAP(329): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63) 12-06 14:47:47.038: E/SOAP(329): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) 12-06 14:47:47.038: E/SOAP(329): at com.example.looli.MainActivity$1.onClick(MainActivity.java:82) 12-06 14:47:47.038: E/SOAP(329): at android.view.View.performClick(View.java:2485) 12-06 14:47:47.038: E/SOAP(329): at android.view.View$PerformClick.run(View.java:9080) 12-06 14:47:47.038: E/SOAP(329): at android.os.Handler.handleCallback(Handler.java:587) 12-06 14:47:47.038: E/SOAP(329): at android.os.Handler.dispatchMessage(Handler.java:92) 12-06 14:47:47.038: E/SOAP(329): at android.os.Looper.loop(Looper.java:123) 12-06 14:47:47.038: E/SOAP(329): at android.app.ActivityThread.main(ActivityThread.java:3683) 12-06 14:47:47.038: E/SOAP(329): at java.lang.reflect.Method.invokeNative(Native Method) 12-06 14:47:47.038: E/SOAP(329): at java.lang.reflect.Method.invoke(Method.java:507) 12-06 14:47:47.038: E/SOAP(329): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 12-06 14:47:47.038: E/SOAP(329): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 12-06 14:47:47.038: E/SOAP(329): at dalvik.system.NativeStart.main(Native Method)
apache/access.log => "POST /WS/user/user.php HTTP/1.1" 500 456 "-" "kSOAP/2.0"
J'ai mis des traces à différents endroits du code PHP, ca plante au niveau de $serversoap->handle()
Quelqu'un aurait une idée ?
Partager