Pessoal porreiro

   estou com um problema (claro) e para estar publicamente a falar do
assunto é uma jogada psicológica para evitar mandar o portátil pela janela,
simplesmente não há budget para isso :) .

   Bom, tenho em mãos a tarefa de me ligar a um servidor WebSphere via SOAP
(para o qual tenho um WSDL tirado directamente do servidor) e que tinha tudo
para funcionar, excepto que não, nem por isso, e o problema não é
necessariamente com o contactar o serviço e enviar o pedido, tem a ver com
...... a forma como o pedido é interpretado do outro lado . Ahh, só para
colocar o ambiente no sitio certo, tudo o que não conseguir fazer é culpa
minha (claro) e a postura é , do meu lado funciona, amanha-te que não te
ajudo ... isto é o cliente :D , só digo isto porque "olhar para o serviço do
lado deles", "ver o servlet e perceber a razão" ou outras coisas está fora
de questão (fail driven environment) .
   É altamente complicado também dar o WSDL aqui ou mostrar totalmente os
envelopes de SOAP que estão a sair, NDA e afins, mas ainda assim vou tentar
explicar o problema genéricamente para ver se faz click em alguém, peço um
bocadinho de pachorra e obrigado já por lerem ;)

  - O Problema, versão rápida  -

  Tenho um WSDL, o flex lê tudo impecavelmente, chamo a operação, construo e
passo os parametros, o envelope é construido (estruturalmente correcto)
segue, o servidor recebe e depois de o receber não consegue ler os
parametros correctamente e cospe fogo (ou no caso uma excepção javesca) .

  - O problema, outras abordagens -

  #1 - Peguei em PHP ( > 5.2) , entreguei o WSDL à biblioteca de SOAP ,
preencho os parametros, o envelope é contruido, segue e pumba, consigo
receber exactamente o mesmo erro :)

  #2 - do lado do cliente (um sector do cliente que é técnico mas não domina
o negócio ou tecnologia) mostraram um cliente feito em C# que : tem o wsdl,
constroi os parametros, envia os parâmetros, constroi o envelope e .........
recebe um erro, mas diferente, já orientado ao negócio (vá :) ) . eu pulo de
alegria, peço o Envelope construido porque finalmente vou ver os erros das
minhas maneiras e ... pouco emocionante, o envelope é estruturalmente igual,
tem os parâmetros iguais, tudo igual ... excepto .

  - O problema, [Where the Bugs Live] -

  Ok, o SOAP construído pelo C# é estruturalmente igual ao "meu" (tags,
parâmetros, etc) , excepto que a abordagem aos namespaces muda e os
parametros têm todos o tipo xsi (tanto o php como o flex [webService] não
estão a marcar o tipo dos dados .. não me fascina e não creio que deva ser a
questão)  .

  - O problema, abordagem Flex Builder e consequentemente problema #2
[MapType] -

  Já que o flex builder permite, ignorei então o mx:WebService e pedi
simpaticamente que o Flex Builder, com o WSDL, gerasse as classes e o
serviço para orientar a coisa, na esperança que o gerador altere a abordagem
ao encoding e afins e que ponha aquilo numa forma que o WebSphere ( ou o
servlet em si ) entenda . Ele papou o WSDL, criou as classes todas, criou os
tipos complexos todos, _impecavel_ .. excepto :)

  Excepto que o unico parametro que a função leva ( marcada como um Map de
vários Items no WSDL) *tem* que ser do tipo MapType
(mx.rpc.soap.types.MapType) e baralhei-me . documentação é (qq coias que não
se encontra) , vi o código , vi a herança, mas juro (e aqui sim, admito
nabice) que não vi o uso para aquilo, ou por outra, não percebo como posso
atribuir valores a um objecto do tipo MapType para sequer experimentar
chamar a operação .

  Ok, dentro da minha nabice, o expectavel do MapType seria ser um tipo que
me abstrai-se ( no caso à função ) um array (associativo ou não) ou coisa
parecida para depois fazer o encode ( e realmente a unica coisa que o
MapType parece fazer é encode e decode - o que me lembra, vou olhar para o
decode)  , mas não estou a perceber como posso enviar-lhe dados ... anyway ,
mais uma vez, se isto fizer click a alguém, impecavel, senão, não há stress
:D


 - O moral da história  ? -

Não temos, tenho duas linguagens diferentes a chamar o serviço à sua maneira
e tenho sempre a mesma reposta, por outro lado tenho uma linguagem C# / .Net
(bem mais enterprise , wink wink wink está tudo explicado? wink wink ) que
da mesma forma solta (toma lá WSDL  ,gera lá o proxy dinamicamente, envia lá
a coisa) tem uma resposta completamente diferente (e sim, é o mesmo WSDL,
juram-me a pés juntos :) )

Isto diz alguma coisa a alguém? Sim , não , David não me chateies? :)



Obrigado por chegarem até aqui ;) , desculpem a abordagem confusa, mas havia
semi-bastante para dizer e disperso ;)
David Ramalho

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para 
[email protected]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a