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 : 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);
        		}
code PHP
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;"
le fichier 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
 
<?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>
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
 
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/error.log => rien
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 ?