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:19Moderador
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
[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:41Moderador
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
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:58Moderador
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:55Ainda 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:11Moderador
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
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

