2012-05-15 8 views
0

J'ai un service Web .net qui est standard SOAP, ainsi que j'ai ajouté la capacité POST/GET. Dans .net, je peux consommer le service Web sans aucun problème et lorsque j'utilise la page test POST, je peux également utiliser le service Web avec succès. J'ai eu une demande d'un développeur php pour utiliser le service web qui, je pensais que ce ne serait pas un problème du tout, mais il est incapable d'obtenir un résultat positif. Je n'ai jamais utilisé PHP, donc je n'ai pas de projet de test que je peux même utiliser pour le côté php des choses. Je crois que c'est le premier service web qu'il a utilisé, donc il n'a pas beaucoup d'expérience lui-même.Obtenir un service Web .NET utilisable par php via SOAP

Mes questions sont les suivantes:

1) En tant que développeur .net je suis perplexe sur la façon de commencer même regarder le problème. Je ne sais pas si c'est un problème dans mon service web ou un problème dans son code php. Parce que. NET et POST fonctionnent, je suis enclin à croire que c'est quelque chose dans son code, mais je suis incapable de tester parce que je ne sais pas php.

2) Y a-t-il un tag ou quelque chose que je dois faire pour permettre à php d'utiliser correctement mon service?

3) Y at-il un outil que je peux utiliser pour vérifier la compatibilité avec php?

4) Est-ce que quelqu'un avec des connaissances PHP peut regarder son code et voir s'il y a des problèmes évidents?

RESOLU: Veuillez voir le code de travail en réponse.

+0

Utiliser 'echo $ client -> __ getLastRequest()' et montrer ce qu'il imprime. Plus précisément, vérifiez que les trois paramètres d'entrée sont présents dans la requête. – MrCode

+0

@MrCode J'ai essayé ceci, en utilisant une page de test de script PHP (http://writecodeonline.com/php/) et voici le résultat: 1db1c37d-b181-443e-8cfb-c4574c1245d955184d93-771a-44d1-ba7a-fd02fe1e15f5. Clairement, il n'y a que 2 guids présents là-bas. Sûr semble que cela pourrait être le problème. Voyez-vous quelque chose de mal avec le code de décodage de tableau? – Essential

+0

'__getLastRequest()' devrait vous donner tout le XML pour la requête. Vous devrez peut-être voir la source pour la voir dans un navigateur (car elle peut masquer le fichier XML). Mettez à jour la question avec la requête XML complète, afin que nous puissions voir le tout. – MrCode

Répondre

1
$function = "soapcall"; 
$array =array("Param1" => "parameter1", "Param2" => "parameter2", "Param3" => "parameter3"); 

$client = new SOAPClient( 
'http://url.asmx?WSDL', 
array( 
    'location' => 'url.asmx?WSDL', 
    'trace' => 1, 
    'style' => SOAP_RPC, 
    'use' => SOAP_ENCODED, 
) 
); 


$result = $client->__soapCall('soapcall', array("parameters"=>$array)); 

foreach($result as $r) 
{ print $r."<br>"; } 
0

Il y a un certain manque d'interopérabilité avec WCF et d'autres services Web - ce n'est pas seulement une chose PHP, les bibliothèques Java échouent souvent à travailler avec les services Web WCF. Il y a plus d'informations dans beaucoup d'autres questions SO - voir l'encadré.

Une chose que vous pouvez essayer est SOAPUI (ou from sourceforge) pour appeler votre service Web «interactivement» qui devrait l'aider à comprendre les services Web.

+0

Merci pour le lien SOAPUI, il semble que cela vous sera très utile pour aider à diagnostiquer cela. – Essential

+0

J'ai dl'd et installé SOAPUI et mon service Web a passé la conformité WS-I. J'ai aussi effectué de nombreux tests/demandes et tout semble fonctionner comme prévu. À ce stade, je dois supposer que c'est un problème avec PHP qui ne joue pas bien avec SOAP. – Essential

0

Nous utilisons NuSoap pour les appels webservice en PHP et cela fonctionne très bien.

+0

Merci pour votre suggestion. Je vais le transmettre. – Essential