Client SOAP en C# à convertir en PHP
Fermé
Profane24
Messages postés
2
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
10 octobre 2013
-
10 oct. 2013 à 09:50
Profane24 Messages postés 2 Date d'inscription jeudi 10 octobre 2013 Statut Membre Dernière intervention 10 octobre 2013 - 10 oct. 2013 à 10:53
Profane24 Messages postés 2 Date d'inscription jeudi 10 octobre 2013 Statut Membre Dernière intervention 10 octobre 2013 - 10 oct. 2013 à 10:53
A voir également:
- Client SOAP en C# à convertir en PHP
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir youtube en mp3 avec audacity - Guide
- Convertir epub en kindle - Guide
- Convertir wfp en mp4 - Forum Accessoires & objets connectés
- Convertir audio en texte word - Guide
1 réponse
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié par Reivax962 le 10/10/2013 à 10:29
Modifié par Reivax962 le 10/10/2013 à 10:29
Bonjour,
Ils sont pas cool avec ton C# : ça ne donne aucune info sur le mécanisme, uniquement les paramètres à passer... Car Visual Studio gère lui-même les références au web service et le présente comme une fonction normale (ou presque), masquant l'interface Soap. Et en plus le code est moche et peu clair au possible.
En Php, il faut utiliser une classe comme SoapClient (https://www.php.net/manual/fr/class.soapclient.php
Tu la fais pointer vers l'URL de ton web service (en mode WSDL), qu'il faut connaître (et que le C# te masque... si tu ne la connais pas, il faut que tu la demandes à ton client).
Ensuite, tu construis ton tableau de paramètres sur un modèle proche :
Et ensuite tu appelles le service avec ces paramètres :
https://www.php.net/manual/fr/soapclient.soapcall.php
Dernière chose, pour les dates, en C# le DateTime.Now donne une certaine valeur... J'ai remplacé par time() en PHP, qui donne un timestamp Unix. Je ne suis absolument pas sûr que ce soit la valeur qu'attends le web service. Il faudra sans doute tester un peu et adapter (peut-être attend-il une chaîne de caractère ?)
Bon courage, ça ne s'annonce pas facile !
Xavier
Ils sont pas cool avec ton C# : ça ne donne aucune info sur le mécanisme, uniquement les paramètres à passer... Car Visual Studio gère lui-même les références au web service et le présente comme une fonction normale (ou presque), masquant l'interface Soap. Et en plus le code est moche et peu clair au possible.
En Php, il faut utiliser une classe comme SoapClient (https://www.php.net/manual/fr/class.soapclient.php
Tu la fais pointer vers l'URL de ton web service (en mode WSDL), qu'il faut connaître (et que le C# te masque... si tu ne la connais pas, il faut que tu la demandes à ton client).
Ensuite, tu construis ton tableau de paramètres sur un modèle proche :
$params = array(
CommandeStatut => array(
'FournisseurId' =>1,
'Reference' => "1234567890",
'EtatsCmd' => array(
array('Code'=>"01", 'Commentaire' => "A valider"),
array('Code'=>"02-1", 'Commentaire' => "En cours",
'LivraisonDate'=>time(), 'LivraisonNumber' => 1),
array([...]),
[...]
);
);
);
Et ensuite tu appelles le service avec ces paramètres :
https://www.php.net/manual/fr/soapclient.soapcall.php
$client->UpdateCommandesStatut($params);Bon, personnellement je n'ai jamais fait ça en php (mais beaucoup en C#), donc je ne peux pas te garantir que le script que je donne fonctionne tel que. Mais lis la doc que j'ai indiquée, je pense que tout y est.
Dernière chose, pour les dates, en C# le DateTime.Now donne une certaine valeur... J'ai remplacé par time() en PHP, qui donne un timestamp Unix. Je ne suis absolument pas sûr que ce soit la valeur qu'attends le web service. Il faudra sans doute tester un peu et adapter (peut-être attend-il une chaîne de caractère ?)
Bon courage, ça ne s'annonce pas facile !
Xavier
10 oct. 2013 à 10:53
L'appel C# a l'air d'être 100% objet et je ne sais pas si l'envoi en tableau ne lui pose pas problème. En tout cas, je te remercie de ton coup de main et je me replonge dedans en partant de ton modèle.