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 -~----------~----~----~----~------~----~------~--~---
