Tout d'abord, ma question est similaire à Celui-ci
Mais c'est un peu différent. Ce que nous avons est une série d'environnements, avec le même ensemble de services. Pour certains environnements (les locaux), nous pouvons avoir accès au WSDL et générer ainsi le client SUDS. Pour un environnement externe, nous ne pouvons pas accéder au WSDL. Mais étant la même chose, j'espérais que je puisse changer juste l'URL sans régénérer le client. J'ai essayé de cloner le client, mais cela ne fonctionne pas. P>
Edit: Ajout de code: P>
baseclient = suds.client.Client(host) client = baseclient.clone() client.options.location = otherhost ....
3 Réponses :
Vous pourriez être capable de le faire en spécifiant l'emplacement code> code> du service. En supposant que vous avez un code> objet code> appelé En outre, vous pouvez utiliser une copie locale d'un fichier WSDL comme URL code> code> lors de la construction du client à l'aide d'un fichier Client code>, vous pouvez modifier l'emplacement de service en mettant à jour l'URL dans
client.Option.Location Code>. P >
fichier: // code> schéma de l'URL, par exemple.
fichier: ///path/to/service.wsdl code>. Donc, cela pourrait être une autre option pour vous. Bien sûr, vous devrez également spécifier l'emplacement
code> de sorte que l'emplacement par défaut de la WSDL soit remplacé. P>
J'ai essayé beaucoup de choses mais je ne peux pas comprendre ce que je fais mal. Je vais ajouter du code à la question initiale, ce serait génial si vous pouviez le vérifier
Mon problème est que le fournisseur de services vous donne un fichier. Pour le mode test, vous devez modifier le fichier WSDL manuellement avec l'URL de test. Je voulais apporter le changement de manière dynamique après avoir chargé le fichier et mettre à jour l'emplacement de l'adresse de service. Je ne pense pas que ce soit possible.
Je l'ai !.
Je ne sais même pas comment je l'ai compris, mais avec un peu de deviner et une bonne chance, je me suis retrouvé avec ceci: et ça marche!
Je ne trouve aucune documentation sur cette propriété (client.wsdl.url), mais cela fonctionne, alors je le pose au cas où quelqu'un ait le même problème. P> p>
Argh! Il venait de recevoir l'URL du dossier. Le paramètre Client.WSDL.URL est modifié, mais il continue à aller au service d'origine.
Alors ça marche? Sinon, peut-être une combinaison de client.wsdl.url code> et
client.option.location code>? Cela commence à se sentir hacky, peut-être que la liste de diffusion SUDS serait plus utile?
client.set_option(new_url)
Certaines explications ou un lien vers la documentation rendraient votre réponse beaucoup plus précieuse.