Respondido Passando parâmetros para WebService

  • terça-feira, 20 de março de 2012 19:05
     
     

    Saudações a todos.

    Tenho um WebService com um método inserirCotação, esse método recebe informações do cliente e também dos produtos e é justamente nos produtos que estou tento problema.

    Como pode ser mais de um produto pensei em utilizar um array como parâmetro, no WebService em si funciona, mas quando tento passar o parâmetro no projeto do Windows Phone ocorre Overload e nos parâmetros Arrays (como de String[] e Double[]) da erro de conversão.

    Error 2 Argument 5: cannot convert from 'string' to 'PhoneApp1.ServiceReference1.ArrayOfString' C:\Users\Brian\Documents\Visual Studio 2010\Projects\PhoneApp1\Negocios.cs 85 90 PhoneApp1

    Error 1 The best overloaded method match for 'PhoneApp1.ServiceReference1.Service1SoapClient.InserirCotacaoVendaAsync(int, string, string, string, PhoneApp1.ServiceReference1.ArrayOfString, PhoneApp1.ServiceReference1.ArrayOfDouble, PhoneApp1.ServiceReference1.ArrayOfDouble, PhoneApp1.ServiceReference1.ArrayOfString, PhoneApp1.ServiceReference1.ArrayOfString)' has some invalid arguments C:\Users\Brian\Documents\Visual Studio 2010\Projects\PhoneApp1\Negocios.cs 85 13 PhoneApp1

    Só para entender a situação eu quero criar um App para comunicação com meu  ERP.


    Brian Souza - Análise e Desenvolvimento de Sistemas

Todas as Respostas

  • terça-feira, 20 de março de 2012 19:19
    Moderador
     
     

    Brian,

    Você poderia nos enviar o trecho de código onde faz o consumo do WebService e que está dando o problema?
    Além disso, se puder nos enviar apenas a assinatura (parâmetros) do método que está tentando executar.

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

  • terça-feira, 20 de março de 2012 19:21
     
      Contém Código
    [WebMethod]
            public void InserirCotacaoVenda(int qtdlinha,string codCliente, string dataDocumento, string DataVencimento,
                string[] codItem, double[] quantidadeIten, double[] precoItem, string[] imposto, string[] cfop)
            {
                Global.QtdLina = qtdlinha;
                DateTime dtDoc = Convert.ToDateTime(dataDocumento);
                DateTime dtVenc = Convert.ToDateTime(DataVencimento);
                //No layout, construir um metodo para tratar SQLInjection
                CotacaoVendas cv = new CotacaoVendas(codCliente, dtDoc, dtVenc, codItem, quantidadeIten, precoItem, imposto, cfop);
                cv.InserirCotacaoVendas();
            }



    Brian Souza - Análise e Desenvolvimento de Sistemas

  • terça-feira, 20 de março de 2012 19:41
    Moderador
     
     

    Brian,

    Acredito que tenha ficado faltando o código onde vc tenta chamar o seu WebServices, que pelo que comentou é onde está tendo problema, correto?


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

  • terça-feira, 20 de março de 2012 19:52
     
      Contém Código
    Não está pronto ainda mas segue:
    
    public void InserirCotacao()
            {
                ServiceReference1.Service1SoapClient insCot = new ServiceReference1.Service1SoapClient();
                insCot.InserirCotacaoVendaCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(insCot_InserirCotacaoVendaCompleted);
                insCot.InserirCotacaoVendaAsync(IQtdLinha, SCodCliente, SDataDoc, SDataVenc, SCodCliente, DQtdItem, DPrecoItem, SImposto, SCfop);
            }
    
            void insCot_InserirCotacaoVendaCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
            {
                throw new NotImplementedException();
            }


    Brian Souza - Análise e Desenvolvimento de Sistemas

  • terça-feira, 20 de março de 2012 19:58
    Moderador
     
      Contém Código

    Brian,

    Pelo código que enviou, parece que as váriáveis SCodCliente, DQtdItem, DPrecoItem, SImposto, SCfop não são arrays.
    Como seu WebMethod espera arrays, terá que passar arrays... Uma possível solução, caso vc só tenha um valor para passar agora, seria:

    public void InserirCotacao()
    {
        ServiceReference1.Service1SoapClient insCot = new ServiceReference1.Service1SoapClient();
        insCot.InserirCotacaoVendaCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(insCot_InserirCotacaoVendaCompleted);
        insCot.InserirCotacaoVendaAsync(IQtdLinha, SCodCliente, SDataDoc, SDataVenc, new string[] { SCodCliente }, new decimal[] { DQtdItem } , new decimal [] { DPrecoItem }, new string[] { SImposto }, new string[] { SCfop });
    }
    
    void insCot_InserirCotacaoVendaCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        throw new NotImplementedException();
    }

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

  • quarta-feira, 21 de março de 2012 13:55
     
     
    Ainda sim não dá certo pois ele pede variaveis 'PhoneApp1.ServiceReference1.ArrayOfString', não entendo muito bem o porque, pois no webservice receberia arrays.

    Brian Souza - Análise e Desenvolvimento de Sistemas

  • quarta-feira, 21 de março de 2012 14:11
    Moderador
     
      Contém Código

    Brian,

    Fiz um teste aqui... Faça o seguinte:

    No começo do seu arquivo adicione o namespace do seu Proxy do WebServices, exemplo:

    using PhoneApp1.ServiceReference1;

    E na hora de fazer a chamada:

    insCot.InserirCotacaoVendaAsync(IQtdLinha, SCodCliente, SDataDoc, SDataVenc, new ArrayOfString() { SCodCliente }, new ArrayOfDouble { DQtdItem }, new ArrayOfDouble { DPrecoItem }, new ArrayOfString { SImposto }, new ArrayOfString { SCfop });

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

  • sexta-feira, 25 de maio de 2012 16:41
     
     Respondido

    Cara tenho que mudar as configurações do Web Service, setar o tipo de retorno.

    Valeu.


    Brian Souza - Análise e Desenvolvimento de Sistemas

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