À l'aide de PHP pour appeler un service web WCF avec plusieurs liaisons
J'ai un service web WCF qui permet à la fois de Base HTTP et WS-HTTP des clients, à la fois sur HTTPS à l'aide du nom d'utilisateur & mot de passe d'authentification. Ceci est obtenu grâce à deux fixations sur le même service.
Donc, le service est à https://foo.com/Service.svc, le HTTP de Base (SOAP 1.1) point de terminaison est https://foo.com/Service.svc/Unp11, et le WS-HTTP SOAP (1.2), de ce point de terminaison est https://foo.com/Service.svc/Unp .
Un client tente d'accéder à ce service web via PHP 5, à l'aide de son SOAP de soutien, et d'avoir des problèmes de connexion au service. Il reçoit un HTTP 400 (Bad Request), ce qui tend à se produire si le message SOAP est mal formé, ou un SOAP 1.1 message est envoyé à un SOAP 1.2 point de terminaison (ou vice versa).
Je ne connais que le PHP de base donc je vais avoir de la difficulté à l'aide de lui. Je sais que vous pouvez créer un client en faisant
$client = new SoapClient('https://foo.com/Service.svc?wsdl');
mais comment spécifier la liaison/d'extrémité? Existe-il des problèmes connus de la réalisation de tout cela avec PHP?
Mise à JOUR
Ok, donc je peux utiliser le PHP pour se connecter au service WCF ok (en spécifiant la version SOAP dans le SoapClient
constructeur), et en appelant $client->__getFunctions()
renvoie une liste correcte de tout le web opérations de service.
Quand j'ai essayer d'appel à l'aide de $client->__soapCall
, la page se trouve juste là chargement depuis un certain temps, et finalement retourne l'erreur "Erreur de Récupérer les en-têtes http". Ce qui est exactement ce que voulait dire et comment puis-je résoudre ce problème? (La consommation du service .Net client fonctionne parfaitement.)
OriginalL'auteur Graham Clark | 2009-07-27
Vous devez vous connecter pour publier un commentaire.
Viens de tomber sur cela aujourd'hui, la création d'un WCF avec plusieurs liaisons pour un PHP appelant. Définition de l'emplacement s'affiche pour permettre à la fois le WSDL version de PHP SoapClient et la spécification d'une liaison à utiliser.
WCF config est (1 service avec 2 fixations wsHttp et basicHttp), assez simple.
Code PHP:
OriginalL'auteur Altai
Nous avons un service SOAP qui a plusieurs liaisons. En C# lorsque vous ajoutez un service de référence à un fichier wsdl, vous obtenez une classe créée pour chacun, mais en PHP, il semble que vous ne pouvez pas spécifier la liaison que vous souhaitez utiliser - cela m'a causé des problèmes lorsque les fixations sont contradictoires type/noms de méthode. Il ne semble fonctionnent généralement bien, bien, mais je ne sais pas vraiment comment c'est de le traiter en interne.
L'autre problème commun que j'ai eu, c'est que j'ai toujours envelopper les paramètres en charge des tableaux ou des structures - parfois, vous obtenez une Mauvaise Demande de retour si le serveur attend un paramètre et que vous n'avez pas tout à fait réglé correctement. (voir La difficulté à obtenir ma tête autour de SOAP en PHP)
Pas sûr que c'est beaucoup d'aide, juste quelques pensées. Il y a aussi quelques tiers de Savon de l'implémentation du client écrit en PHP qui pourrait être intéressant de regarder, mais ils seront beaucoup plus lent.
Oups, n'a pas attendu assez longtemps. "Erreur de Récupérer les en-têtes http" apparemment...?
OriginalL'auteur Tom Haigh