none
Web service retorna Lista vazia RRS feed

  • Pergunta

  • Pessoal, estou consumindo um serviço no C# porém estou com um problema.

    Todos os métodos que retornam uma lista, estão retornado essa lista vazia. utilizei a ferramenta SOA UI pra verificar se o problema é no serviço, mas não. No SOAP UI os dados retornam normalmente.

    Verifiquei que na classe Reference.cs, nos métodos "response" ex. encontrarListaResponse(), falta uma notation que é comum nos métodos que não retornam lista (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)). Adicionei na mão, e o método passou a retornar valor.

    Alguem sabe se preciso fazer alguma configuração na hora de importar a WSDL para que essa informação seja inserida de forma automática? Pois esse problema, ocorreu após uma atualização no serviço.

    quarta-feira, 25 de fevereiro de 2015 15:38

Respostas

  • Pessoal, consegui identificar o problema. Caso alguém passe pelo mesmo, segue a solução.

    Identifiquei uma notation nas classes modelo do java (xmlRootSerialization). Acredito q pelo fato de ter havido uma atualização no SDK do Java ou no Jboss(Ambos foram atualizados). Nessas notations passei a informar o parametro (Name) além de ter que herdar a classe(Serializable) ficando o código da seguinte forma.(Sei que o problema é em Java mas pode ser que alguém passe pela mesma situação).

    @XmlRootElement(name="NomeClasse")
    public class NomeClasse extends Serializable

    Código que não funcionava:

    @XmlRootElement()
    public class NomeClasse

    Fazendo as alterações conforme dito acima. A WSDL passou a ser gerada de acordo com o que era esperado pelo cliente(.net).

     Agradeço mais uma vez, o Renato pela ajuda!

     



    • Editado joao.p.aquino sexta-feira, 13 de março de 2015 13:06
    • Marcado como Resposta joao.p.aquino sexta-feira, 13 de março de 2015 13:06
    sexta-feira, 13 de março de 2015 13:02

Todas as Respostas

  • Acho que o ideal seria vc recriar a referência ao serviço na aplicação que consome o mesmo. De qualquer forma, o problema que vc reportou é bem estranho.

    Temos Web Services aqui no trabalho que vivem sendo atualizados, o que não obriga a mudanças nas referências de projetos que dependem dos mesmos.

    Espero ter ajudado.

    Abs

    quarta-feira, 25 de fevereiro de 2015 16:11
  • Renato, muito obrigado pela resposta!

    Mas o problema não está no cliente.

    Identifiquei que na WSDL gerada pelo serviço, algumas informações estão diferentes

    este trecho é a estrutura que antes funcionava.

    <xs:complexType name="metodoWS">
    <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="nomeDo retorno" type="tns:tipoDoRetorno"/>
    </xs:sequence>
    </xs:complexType>

    Já este trecho é a forma que esta sendo gerado o wsdl atualmente e que não funciona.

    <xs:complextype name="metodoWS">
    <xs:sequence>
    <xs:element maxoccurs="unbounded" minoccurs="0" ref="tns:tipoDoRetorno">
    </xs:element>
    </xs:sequence> 
    </xs:complextype>

    Note que no primeiro exemplo, a WSDL gera 2 parametros (name e type) e no segundo, apenas um(ref).

    Desta forma, o problema é gerado pelo serviço e não pelo cliente... como o serviço é em Java. não sei se conseguirei ajuda aqui. rs. 

    Se me der alguma luz serei muito grato!!

    Mas de qualquer forma, muito obrigado pela resposta!

    sexta-feira, 6 de março de 2015 04:43
  • João,

    Aí complicou mesmo.

    Pelo fato do serviço estar em Java, vc não tem controle sobre como ele gera o WSDL. Vc não consegue conversar com o pessoal responsável pelo mesmo, a fim de checar este problema?

    Tente mostrar que alguma mudança afetou o WSDL e que está inviabilizando o acesso em .NET. Embora o padrão SOAP tenha por objetivo simplificar a comunicação entre diferentes plataformas, já vi problemas assim acontecerem na integração .NET e Java.

    • Sugerido como Resposta Renato GroffeMVP segunda-feira, 9 de março de 2015 13:40
    sexta-feira, 6 de março de 2015 12:38
  • Pessoal, consegui identificar o problema. Caso alguém passe pelo mesmo, segue a solução.

    Identifiquei uma notation nas classes modelo do java (xmlRootSerialization). Acredito q pelo fato de ter havido uma atualização no SDK do Java ou no Jboss(Ambos foram atualizados). Nessas notations passei a informar o parametro (Name) além de ter que herdar a classe(Serializable) ficando o código da seguinte forma.(Sei que o problema é em Java mas pode ser que alguém passe pela mesma situação).

    @XmlRootElement(name="NomeClasse")
    public class NomeClasse extends Serializable

    Código que não funcionava:

    @XmlRootElement()
    public class NomeClasse

    Fazendo as alterações conforme dito acima. A WSDL passou a ser gerada de acordo com o que era esperado pelo cliente(.net).

     Agradeço mais uma vez, o Renato pela ajuda!

     



    • Editado joao.p.aquino sexta-feira, 13 de março de 2015 13:06
    • Marcado como Resposta joao.p.aquino sexta-feira, 13 de março de 2015 13:06
    sexta-feira, 13 de março de 2015 13:02