Estou desenvolvendo um programa utilizando a classe TWsdlManager para fazer a comunicação com o meu WS. Para otimizar o processo gravo o arquivo WSDL em um arquivo na pasta system, assim essa leitura é mais ágil. Observei que utilizando essa classe a mesma lê a URL para comunicação de dentro deste arquivo (o que está correto), ocorre que para ambientes de homologação/teste temos que alterar a URL de comunicação com o serviço. Seria possível mesmo lendo a partir de um arquivo (de onde ele vem já com esse endereço gravado) alterar no momento do envio para outra URL? Tem algum método ou propriedade que possamos alterar para fazer isso?
O ideal nesse caso é ter um arquivo wsdl para cada ambiente (produção e homologação) com cada um apontando para a url adequada, aí disponibiliza esses wsdl via url em cada ambiente ao invés da pasta system, desse modo você pode usar o processo abaixo:
_curl := getmv("ZPARURL") //parametro da url do wsdl
oWsdl := TWsdlManager():New()
xRet:= oWsdl:ParseURL( _curl )
Então o objeto do twsdlmanager vai ser populado com o wsdl e url correto em qualquer ambiente desde que seja mantido o url correto no parametro de cada ambiente.
Você tem sua razão em tratar diretamente pela URL, eu só acho um over head desnecessário ficar a cada requisição buscando novamente essa informação que pode simplesmente ficar salva local para uso imediato.
Inclusive se as estruturas forem modificadas quase que inevitavelmente será necessário atualizar o programa também, então atualiza o programa e o xml salvo. Acho melhor deixar mesmo o arquivo salvo local no server. Queria apenas manipular a URL no momento do envio, como alternativa estou com dois arquivos salvos, um de produção e outro de homologação.