Je testais un service Web en PHP et Python. L'adresse du service Web était, disons, ci-dessous est le code que j'ai utilisé pour communiquer avec le service Web (Python): P> http://my.domain.com/my/webservice code>. Lorsque j'ai testé le service Web en PHP en utilisant cette URL tout a fonctionné bien. Mais, quand j'ai utilisé le même endroit mais en python en utilisant Soappy, j'ai eu une erreur.
from SOAPpy import WSDL
server = SOAPProxy('http://my.domain.com/my/webservice/', namespace)
server.myFunction()
5 Réponses :
Parce que l'URL du serveur est: http://my.domain.com/my/webservice/ P>
La bibliothèque PHP doit suivre les redirections par défaut. P>
Ce sont des différentes URL. De nombreux serveurs Web corrigeront automatiquement de telles URL, mais il n'est pas nécessaire pour eux de le faire. P> http://my.domain.com/my/webservice code> implique un fichier
Webservice code> dans le dossier
mon code>.
http://my.domain.com/my/websservice/ code> implique le document par défaut dans le dossier My / WebService. P>
[Clause de non-responsabilité: Ceci est une copie de ma réponse d'ici . Je sais que certaines personnes n'aiment pas ce genre de copie, mais cela explique pourquoi la barre oblique est importante.]
Imaginez que vous servez une page p> qui contient P> http://mydomain.com/bla/
L'erreur est une redirection de 301 signifiant que vous êtes redirigé vers l'URL avec la barre oblique à la fin par le serveur Web. p>
Il semble que PHP fonctionnera automatiquement, suivez cette redirection et ne jetez donc pas l'erreur, tandis que Python ne le fera pas. Vous devrez procéder comme suit: P>
La nouvelle URL doit être disponible dans les en-têtes de réponse. p>
hth. p>
À quoi ressemble une URL de savon est au serveur, si une barre oblique est nécessaire dépend du serveur et de la mise en œuvre du savon. P>
Dans votre cas, je suppose que le serveur cible est un serveur Apache et l'URL SOAP est en fait un répertoire contenant votre script de manutention SOAP. Lorsque vous accédez à http://my.domain.com/my/webservice sur le serveur, Apache décide que le répertoire est correctement adressé comme http://my.domain.com/my/webservice/ et envoie une redirection 301. P>
SOAP utilise un poteau HTTP, dont le client doit décider si le redirection doit être suivi ou non, je suppose que cela n'attend que l'un. P>
Autres implémentations de savon, par exemple Apache Axis en Java a des URL qui ressemblent à des servlets, par ex. http://domain.com/soap/webservice sans barrer, dans ce cas l'URL sans barre oblique correct, il n'y a aucun répertoire qui existe de toute façon. p>
Axe échoue sur les redirections aussi, je pense. P>