Eu entendo como funciona um SOAP, mas não sei como interpretar algumas coisas.
Por exemplo, essa parte tirei do manual do webservice, mas foi chute.
Ele mostra como é o XML de ida e de volta, mas não sei traduzir isso.
http://homologacao.averba.com.br/webser ... .soap?wsdl
Nessas horas um arquivo pronto, ou um bom manual ajudariam muito.
Como essas coisas foram para o envelope, usado na comunicação, não alteram o conteúdo do XML que interessa.
Imagine assim:
Um webservice SOAP é igual a uma LIB usada no Clipper/Harbour, com a diferença de que está na internet.
Pra usar uma função da LIB/Webservice, precisa saber o nome dela, e que parâmetros precisa passar pra função.
Acontece que cada programador tem seu estilo, então cada LIB/Webservice tem seu "jeito".
A única parte padrão em tudo que existe, é que tudo é feito por XML.
Cada LIB/Webservice de cada programador tem um estilo, então cada LIB/Webservice tem seu envelope particular, e sua exigência dentro do XML.
Eu aprendi esse conceito, que seria o mesmo pra fazer um programa usando LIB de terceiros.
A partir daí, cada nova LIB/Webservice vai ser um novo aprendizado sobre as particularidades.
Dá pra ter alguma ajuda olhando aquele manual do webservice, que todos os webservices acabam fornecendo automaticamente.
Mas precisa tempo e paciência pra entender cada um.
Se aprender direito o conceito de como funciona, pode até conversar com quem já fez PRA ESSE WEBSERVICE, sabendo do que vai precisar.
Como viu, nesse webservice, agora são 5 coisas:
- Operação SOAP que vai no envelope
- Operação SOAP (Soap Action) que vai na comunicação
- Endereço de comunicação
- Envelope
- XML interno
Por enquanto aparentemente os 4 primeiros estão resolvidos, já que houve a comunicação.
A mensagem de erro reclama de usuário/senha, e isso faz parte do ítem 5.
Então deixe os 4 como estão, e trabalhe somente no 5.
Tem horas que é mais fácil fazer como teste/erro, ainda mais quando existe ambiente de teste, que é o que está usando. (homologação=teste)
Pode brincar à vontade, desde que não faça um loop infinito mandando coisas sem parar.
É só olhar essa parte do retorno que contém o erro. (como deve ter percebido, o retorno também tem um envelope com particularidades, mas o que interessa está dentro dele, no "body" (corpo) do envelope)