Bonjour à tous
je vous explique mon problème. J'ai un serveur SOAP en PHP (avec une simple fonction Add) qui fonctionne très bien avec un client PHP.
Maintenant, je veux créer un client Java avec ksoap2 pour une application android qui se connecte à ce même serveur.
Problème, j'ai une erreur...
Voici le code de mon serveur php:
Pour info, mon client 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 class MyServer { function Add($x,$y) { return $x+$y; } } try { $server = new SoapServer('monFormat.wsdl', array('trace' => 1,'encoding' => 'ISO-8859-1')); $server->setclass('MyServer'); $server->setPersistence(SOAP_PERSISTENCE_REQUEST); } catch (Exception $e) { echo 'erreur'.$e; } // Si l'appel provient d'un Web-Service if ($_SERVER['REQUEST_METHOD'] == 'POST') { try { $server -> handle(); }catch (Exception $e){ echo 'erreur'.$e; } }
Maintenant mon client 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 // Nouveau Client SOAP try { $client = new SoapClient('monFormat.wsdl', array('trace' => 1)); $x = "2"; $y = "3"; try{ $oReturn = $client -> __soapCall('Add', array('int1' =>$x, 'int2' =>$y)); } catch (SoapFault $fault) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } var_dump($oReturn); } catch (SoapFault $fault) { echo 'erreur : '.$fault; }
Et enfin voici le code d'erreur...
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 public class MyTest extends Activity { private static final String SOAP_ACTION = "http://exemple.com/Add"; private static final String OPERATION_NAME = "Add"; private static final String WSDL_TARGET_NAMESPACE = "http://exemple.com/"; private static final String SOAP_ADDRESS = "http://monurl.fr/android/serveur.php"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); setContentView(textView); SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME); request.addProperty("int1","2"); request.addProperty("int2","3"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); try{ httpTransport.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); textView.setText(response.toString()); }catch (Exception exception){ textView.setText(exception.toString()); } } }
Si vous avez des suggestions, merci d'avance ^^
Partager