locked
Windows Phone x WebService RRS feed

  • Pergunta

  • Saudações a todos.

    Baixei a SDK do Windows Phone ( 7.1) e para tentar desenvolver algo pensei em algo aparentemente simples, fazer a aplicação consumir um webService.

    O método de consulta do webService retornava um dataset que deveria preencher uma grid no Windows Phone e foi ai que a coisa começou a complicar.

    Como referenciar o webService se não existe a opção Add Web reference (no lugar existe a Service Reference, não sei se é o mesmo principio).

    Alguém já fez isso ? Poderiam me auxiliar?

    Desde já agradeço.


    Brian Souza - Análise e Desenvolvimento de Sistemas

    terça-feira, 28 de fevereiro de 2012 14:04

Respostas

  • Mudei para uma Collection e deu certo.

    Valeu


    Brian Souza - Análise e Desenvolvimento de Sistemas

    • Marcado como Resposta Brian Souza sexta-feira, 25 de maio de 2012 16:59
    sexta-feira, 25 de maio de 2012 16:59

Todas as Respostas

  • Brian,

    segue o mesmo princípio, sendo com algumas observações.

    Você vai fazer a referência web  e depois consumir de forma assíncrona. Segue abaixo um código de exemplo:

    private void ExibirDoacao()
            {
                try
                {
                    wsDoacao.Service_MPM_DoacaoSoapClient doacao = new wsDoacao.Service_MPM_DoacaoSoapClient();
                    doacao.ObterDoacaoCompleted += new EventHandler<wsDoacao.ObterDoacaoCompletedEventArgs>(doacao_ObterDoacaoCompleted);
                    doacao.ObterDoacaoAsync();
                }
                catch (Exception ex)
                {
                    
                    throw;
                }
                
            }
    
    
     void doacao_ObterDoacaoCompleted(object sender, wsDoacao.ObterDoacaoCompletedEventArgs e)
            {
                lbDoadores.ItemsSource = e.Result.OrderByDescending(x=>x.DataDoacao);
                lblValorDoado.Text = e.Result.Sum(x => x.Valor).Value.ToString();
            }

    Att,

    Paulo Rogério

    terça-feira, 28 de fevereiro de 2012 15:57
  • A minha consulta  no WS retorna um dataset.

    Ao tentar preencher no Windows Phone ao invés do resultado, ele mostra ArrayOfXelement.

    Já passou por isto ?


    Brian Souza - Análise e Desenvolvimento de Sistemas

    quarta-feira, 29 de fevereiro de 2012 13:48
  • Brian,

    poderia postar parte de seu código para que possamos entender o que está acontecendo?

    Att,

    Paulo

    quarta-feira, 29 de fevereiro de 2012 20:53
  • private void ConsWebService()
            {
                try
                {
    
                    ServiceReference1.Service1SoapClient Sone = new ServiceReference1.Service1SoapClient();
                    Sone.RetornarConsultaCompleted += new EventHandler<ServiceReference1.RetornarConsultaCompletedEventArgs>(Sone_RetornarConsultaCompleted);
                    Sone.RetornarConsultaAsync();
                }
                catch (Exception erro)
                {
                    MessageBox.Show(erro.ToString());
                }
            }
    
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                ConsWebService();
                
            }
            void Sone_RetornarConsultaCompleted(object sender, ServiceReference1.RetornarConsultaCompletedEventArgs e)
            {
    
                MessageBox.Show(e.Result.ToString());
    
            }
    esse é o trecho do App , o Web service está realizando uma consulta e retornando um dataset ( obs. só há um código retornando dentro do ds, neste teste) e já tentei retornar também uma string no lugar do dataset.

    Brian Souza - Análise e Desenvolvimento de Sistemas

    quinta-feira, 1 de março de 2012 19:21
  • Brian,

    tenta fazer algo parecido com isso.

    private void VerificaUsuarioLogado()
            {
                Util.Funcoes func = new Util.Funcoes();
                Service_VNV_Usuario.VNV_Usuario usuario = func.ObterUsuarioLogado();
    
                if (usuario != null)
                {
                    Service_VNV_Usuario.Service_VNV_UsuarioSoapClient wsUsuario = new Service_VNV_Usuario.Service_VNV_UsuarioSoapClient();
                    wsUsuario.ObterUsuarioPorIDCompleted += new EventHandler<Service_VNV_Usuario.ObterUsuarioPorIDCompletedEventArgs>(wsUsuario_ObterUsuarioPorIDCompleted);
                    wsUsuario.ObterUsuarioPorIDAsync(usuario.UsuarioID);
    
                    
                }
            }
    
            void wsUsuario_ObterUsuarioPorIDCompleted(object sender, Service_VNV_Usuario.ObterUsuarioPorIDCompletedEventArgs e)
            {
                try
                {
                    object results = e.Result;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Internet ou serviço indisponível, tente novamente mais tarde");
                    return;
                }
    
                Service_VNV_Usuario.VNV_Usuario usuario = e.Result as Service_VNV_Usuario.VNV_Usuario;
                if (usuario != null)
                {
    
                }
            }
    

    No seu caso você tem que fazer um cast de e.Result, no exemplo acima eu faço algo parecido.
    Ve se consegue entender o que eu falei.


    quinta-feira, 1 de março de 2012 19:49
  • Desculpa a demora.. mas não entendi muito bem o que deveria fazer..

    Brian Souza - Análise e Desenvolvimento de Sistemas

    quinta-feira, 8 de março de 2012 12:32
  • Mudei para uma Collection e deu certo.

    Valeu


    Brian Souza - Análise e Desenvolvimento de Sistemas

    • Marcado como Resposta Brian Souza sexta-feira, 25 de maio de 2012 16:59
    sexta-feira, 25 de maio de 2012 16:59