En primer lugar, mi pregunta es similar a this onecambiar la URL del servicio web para un cliente espuma en tiempo de ejecución (manteniendo el WSDL)
Pero es un poco diferente. Lo que tenemos es una serie de entornos, con el mismo conjunto de servicios. Para algunos entornos (los locales), podemos conseguir el acceso al WSDL, y generando así el cliente espuma. Para un entorno externo, no podemos acceder al wsdl. Pero al ser el mismo, esperaba poder cambiar solo la URL sin regenerar el cliente. He intentado clonar el cliente, pero no funciona.
Editar: Código de la adición:
host='http://.../MyService.svc'
wsdl_file = 'file://..../wsdl/MyService.wsdl'
client = suds.client.Client(wsdl_file, location=host, cache=None)
#client = baseclient.clone()
#client.options.location = otherhost
client.set_options(port='BasicHttpBinding_IMyService')
result = client.service.IsHealthy()
que me da esta excepción:
El mensaje con Acción 'http://tempuri.org/IMyService/IsHealthy' no pueden ser procesados en el receptor, debido a una falta de coincidencia ContractFilter en el EndpointDispatcher. Esto puede ser debido a un desajuste o bien contrato (acciones que no coinciden entre emisor y receptor) o una falta de coincidencia de unión/de seguridad entre el emisor y el receptor. Verifique que el remitente y el receptor tengan el mismo contrato y el mismo enlace (incluidos los requisitos de seguridad, por ejemplo, Mensaje, Transporte, Ninguno).
La cosa es, si fijo el cliente directamente a la máquina, que funciona bien: cliente = suds.client.Client (host)
Como se puede ver, he intentado clonar el cliente, pero con la misma excepción Incluso he intentado esto:
baseclient = suds.client.Client(host)
client = baseclient.clone()
client.options.location = otherhost
....
Y tengo la misma excepción.
¿Alguien me puede ayudar?
He intentado muchas cosas pero no puedo entender lo que estoy haciendo mal. Voy a agregar un código a la pregunta original, sería genial si pudiera verificarlo – patanpatan
Mi problema es que el proveedor del servicio le da un archivo. Para el modo de prueba, debe modificar el archivo wsdl manualmente con la url de prueba. Quería hacer el cambio dinámicamente después de cargar el archivo y actualizar la ubicación de la dirección del servicio. No creo que eso sea posible. – radtek