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 PHPCode:
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 WSDLCode:
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:
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 => rienCode:
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 ?