8
votes

Pourquoi la barre oblique de fin du service Web est si importante?

Je testais un service Web en PHP et Python. L'adresse du service Web était, disons, 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.

ci-dessous est le code que j'ai utilisé pour communiquer avec le service Web (Python): P>

from SOAPpy import WSDL
server = SOAPProxy('http://my.domain.com/my/webservice/', namespace)
server.myFunction()


0 commentaires

5 Réponses :


3
votes

Parce que l'URL du serveur est: http://my.domain.com/my/webservice/

La bibliothèque PHP doit suivre les redirections par défaut.


0 commentaires

20
votes

Ce sont des différentes URL. http://my.domain.com/my/webservice implique un fichier Webservice dans le dossier mon . http://my.domain.com/my/websservice/ implique le document par défaut dans le dossier My / WebService.

De nombreux serveurs Web corrigeront automatiquement de telles URL, mais il n'est pas nécessaire pour eux de le faire.


0 commentaires

2
votes

[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> xxx pré>

qui contient P>

http://mydomain.com/bla/


0 commentaires

3
votes

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.

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:

  1. Essayez de vous connecter à l'URL initiale
  2. attrape n'importe quelle redirection 301 et éventuellement 302 redirections aussi bien
  3. S'il y avait une redirection, essayez de vous connecter à cette URL à la place.

    La nouvelle URL doit être disponible dans les en-têtes de réponse.

    hth.


0 commentaires

0
votes

À 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.

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.

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.

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.

Axe échoue sur les redirections aussi, je pense.


0 commentaires