2009-06-12 6 views
0

Mon entreprise publie un ensemble de services Web .NET disponibles via SOAP. J'ai besoin d'attacher mon application PHP dans ceux-ci, mais je me heurte à un problème pour lequel je ne trouve pas de solution. L'un des services auxquels j'ai besoin d'accéder porte la signature Advertiser CreateAdvertiser (Advertiser advertiser).Passage d'un objet à un service Web .NET via SoapClient de PHP

Comment puis-je transmettre une instance d'un objet que je n'ai pas (Annonceur)? J'ai essayé de créer une instance de stdClass() et d'affecter les propriétés requises de l'annonceur .NET, mais cela ne fonctionne pas. D'une manière ou d'une autre, j'ai besoin de composer un objet que le service reconnaîtra et transmettra. Des idées sur la façon de s'y prendre?

J'utilise la classe SoapClient pour PHP, bien sûr.

Très apprécié. Après beaucoup d'essais et d'erreurs, j'ai finalement trouvé que la première partie du problème est qu'aucun paramètre n'est passé - ni scalaires simples ni types complexes. Je l'ai essayé d'utiliser params nommés: array ('name1' => 'val1', 'name2' => 'val2') et sans nom, mais une décharge de __getLastRequest montre un appel de méthode vide:

...<SOAP-ENV:Body><ns1:CreateAdvertiser/></SOAP-ENV:Body>... 

J'ai besoin de résoudre ce problème avant de se soucier de la suivante, je pense.

Répondre

2

Donc la réponse ici, au moins pour les services que j'essaie d'appeler, est simple et douloureuse. Cela implique simplement beaucoup de tableaux.

$user = AdvertiserProxy->CreateAdvertiser ( 
    array (
     'advertiser' => array (
     'Name' => 'Advertiser Name', 
     'IndustryCodeList' => array (
      'Agency', 
      'Fortune 500' 
     ) 
    ) 
    ) 
); 

Le advertiser « objet » est la somme de ses parties.

0

Je devais le faire une fois. Un client utilisant PHP avait des problèmes pour utiliser un service Web. (il utilisait NuSoap, je pense) J'ai utilisé Fiddler pour capturer la façon dont le XML se présentait. Une fois que nous le savions, il pouvait assembler le XML, ajouter l'enveloppe de savon, ajuster l'en-tête de longueur de contenu et soumettre avec succès.

Il est trop facile de créer un service Web que PHP ou Java ne peuvent pas utiliser.

+1

Oy. À peu près la dernière chose que je veux faire est d'assembler le XML au format SOAP à la main. J'apprécie la suggestion, mais j'espère que l'espoir ne viendra pas là-dessus. :-) –

Questions connexes