Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css |
Portuguese | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Limitações do client em AdvPLO client de Web Services em AdvPL possui as seguintes limitações: Tratamento de simpleTypeO client em AdvPL considera simpleType sempre tendo restriction e enumeration, as outras estruturas possíveis (list e union) não são suportadas. As opções dentro de restriction, mesmo enumeration, não são validadas ao definir o valor, mas sim inseridas diretamente no XML de envio. Tratamento de complexTypeNão é possível declarar complexType dentro de complexType, como no exemplo abaixo:
Para resolver essa situação, deve-se declarar cada complexType no nível abaixo de schema e usá-los no type dos elementos, como no exemplo abaixo:
Prefixos de namespaceOs prefixos usados para as tags SOAP devem ser somente soap ou soap12; já os prefixos para as tags referentes a WSDL e schema são desprezados. Protocolos de transporte não SOAPNão são aceitos outros protocolos de envio de comando que não sejam SOAP, como HTTP ou SMTP, por exemplo. Service PortSó é aceito uma URL para envio do comando SOAP, não sendo possível declarar, por exemplo, uma URL para cada versão de SOAP. Os ports cujos bindings usam protocolos não SOAP são ignorados e se houver mais de um port para SOAP, será utilizado o primeiro declarado. Para o exemplo abaixo:
os ports WeatherHttpPost e WeatherHttpGet serão ignorados por não utilizarem SOAP e o port selecionado será WeatherSoap12, por ser o primeiro encontrado. Múltiplos schemasO client em AdvPL trata múltiplos schemas declarados dentro de types sem considerar o namespace, tratando todos como sendo do mesmo namespace. Logo, se for declarado um complexType em um schema com um namespace e ao utilizá-lo for passado por acidente outro namespace, não haverá problema, pois o namespace não é considerado. Caso um elemento ou tipo seja declarado com o mesmo nome em schemas diferentes, prevalecerá o último declarado. Para o exemplo abaixo:
o tipo guid será o que possui o elemento de nome "NAME2". Alternativa de contorno para as limitaçõesCaso um WSDL tenha alguma das limitações acima descritas, é possível salvar o arquivo no RootPath do Application Server e alterá-lo lá para poder gerar o client. Ao gerar client WSDL em AdvPL, ao invés de informar a URL, será informado um caminho de arquivo no server, como na imagem abaixo: Dessa forma é possível gerar o client em AdvPL sem alterar o WSDL publicado externamente, caso haja a necessidade de algum ajuste. |