Client SOAP en C# à convertir en PHP
Profane24
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Profane24 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Profane24 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis un développeur PHP. On m'a demandé de réaliser l'appel à un web services via SOAP. Par contre on ne m'a donnée qu'un appel en C# pour pouvoir réaliser mon appel en PHP. Est-ce qu'il y aurait parmi vous une personne avec cette double compétence et avec un peu de temps à m'offrir svp ?
Voici le fameux code C# :
Merci d'avance à celui ou ceux qui pourront m'aider dans cette tâche.
Bonne journée.
Je suis un développeur PHP. On m'a demandé de réaliser l'appel à un web services via SOAP. Par contre on ne m'a donnée qu'un appel en C# pour pouvoir réaliser mon appel en PHP. Est-ce qu'il y aurait parmi vous une personne avec cette double compétence et avec un peu de temps à m'offrir svp ?
Voici le fameux code C# :
public void TestUpdateCommandesStatut()
{
var commandesStatut =
new CommandeStatut[]
{
new CommandeStatut()
{
FournisseurId =1,
Reference = "1234567890",
EtatsCmd = new EtatCmd[] {
new EtatCmd()
{
Code="01",
Commentaire = "A valider"
},
new LivraisonEtatCmd()
{
Code = "02-1",
Commentaire = "En cours",
LivraisonDate = DateTime.Now,
LivraisonNumber = 1
}
,
new EtatCmd()
{
Code = "10",
Commentaire = "Livree"
},
//200
new CommandeArticleEtatCmd()
{
Code = "20",
Commentaire = "Pas encore livree",
Articles = new Article[]
{
new Article()
{
CmdNumber = "22",
Qtte = 2,
Reference = "123"
}
}
},
//201
new CommandeArticleEtatCmd()
{
Code = "21",
Commentaire = "Livree",
Articles = new Article[]
{
new Article()
{
CmdNumber = "22",
Qtte = 2,
Reference = "123"
}
}
},
//303: Problème technique non résolu
new EtatCmd()
{
Code = "30",
Commentaire = "Jamais arrivee"
},
//400: Retour produit atelier
new EtatCmd()
{
Code = "40",
Commentaire = "Annulee par fournisseur"
},
//400: Réaparation en cours
new EtatCmd()
{
Code = "41",
Commentaire = "Annulee par client"
}
}
}
};
this.proxy.UpdateCommandesStatut(commandesStatut);
}
Merci d'avance à celui ou ceux qui pourront m'aider dans cette tâche.
Bonne journée.
A voir également:
- Client SOAP en C# à convertir en PHP
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Filezilla client - Télécharger - Téléchargement & Transfert
1 réponse
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
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.