Olá pessoa, dando continuidade ao artigo anterior onde criamos um web service, nesse artigo irei mostrar como é simples utilizado em uma aplicação WinForm.
Para quem não leu o artigo anterior:
Criando e consumindo Web Service em C-Sharp – Parte 1
Vamos ao que interessa.
1- Abra o projeto anterior, quem não tiver poderá fazer o download aqui.
2- Clique com o botão direito em cima do Solution no Solution Explorer do Visual Studio > Add > New Project…

3- Na janela que ira abrir, escolha Windows Application, defina um nome TesteMeuWebService

4- Agora adicionaremos referencia ao nosso WebService já criado. Clique com o botão direito em cima do Project no Solution Explorer do Visual Studio > Add Web Reference…

5- Vamos listar os Web Services inclusos em nosso Solution.

6- Selecionamos o nosso Web Service

7- Adicionamos como referencia ao projeto.

8- Agora vamos ao WinForm. Adicione 3 Labels, 3 TextBox, 1 ComboBox e 1 Button

9- Adicione a lista de operações no ComboBox conforme imagem abaixo.
- Adição
- Divisão
- Multiplicação
- Subtração

10- Agora de um duplo clique no Button para adicionarmos o evento Click e o código abaixo.
private void button1_Click(object sender, EventArgs e)
{
decimal ValorA;
decimal ValorB;
localhost.OperacoesBasicas operacao = localhost.OperacoesBasicas.Adicao;
decimal Resultado;
decimal.TryParse(textBox1.Text, out ValorA);
decimal.TryParse(textBox2.Text, out ValorB);
switch (comboBox1.SelectedIndex)
{
case 0:
operacao = localhost.OperacoesBasicas.Adicao;
break;
case 1:
operacao = localhost.OperacoesBasicas.Divisao;
break;
case 2:
operacao = localhost.OperacoesBasicas.Multiplicacao;
break;
case 3:
operacao = localhost.OperacoesBasicas.Subtracao;
break;
default:
operacao = localhost.OperacoesBasicas.Adicao;
break;
}
localhost.Service MeuWebService = new localhost.Service();
Resultado = MeuWebService.Calculadora(ValorA, ValorB, operacao);
textBox3.Text = Resultado.ToString();
}
Pronto, mais se formos executar o nosso projeto, ele não será executado, pois o projeto que esta definido como principal é o WebService, então clique com o botão direito em cima do Project do WinForm > Set as StartUp Project

Agora sim, é só executar nosso projeto.

Espero que tenham entendido e qualquer dúvida é só mandar os comentários que responderei.
Se quiser realizar o download do exemplo criado: Aqui
No próximo artigo irei explicar como utilizar o mesmo webservice em um WebForm ASP.NET.
Abraço e até lá.
Postado em ASP.NET, C#, Visual Studio | Marcado como ASP.NET, C#, consumir webservice, Visual Studio, WebService
Rafael, parabéns pelos artigos, estão muito bons. Obrgiado por postar os fontes, estou iniciando no C# e as vezes fico perdido. olhando o código pronto dá pra entender onde estou vacilando e tal.
Parabéns mesmo. Show de bola!
Parabéns. Você está sendo muito esclarecedor e prático, abordando os assuntos com a simplicidade que necessito para aprender.
Obrigado Jean. Todos pois artigos que escrevo incluo o fonte. Acho isso importante justamente porque você pode acompanhar o artigo e acabar errando em alguma parte e o fonte ajuda a entender o que foi feito.
Abraço
Obrigado Elias, continue acompanhado que vem mais novidades.
Ao tentar adicionar a referencia a opção Add Web Reference… não aparece. Existe algum outro caminho para poder adicionar a referencia?
Raphael, como eu passo os valores pela url como parâmetro ?
ou seja os valores do valorA, valorB e o tipo da operação.
abraços…
Olá Marcos
Não tem como você passar parâmetro diretamente na URL do WebService. Siga o exemplo do artigo que o modo correto de se consumir um webservice.
Abraço
A sim, perguntei pois no PHP pode passar os parâmetros diretamente pela URL, mas tranquilo vlw pela resposta.
abraços
Boa tarde, estou com uma enorme dificuldade em colocar meu Web service online… ja tentei com IIS e nada… to mais perdido que cego em tiroteio!…. em codigos java.. android e c# eu vou ate bem… mas vai para essa parte de configurar um servico e etc… putz… me ferro….
Desde ja grato.
Marcos Angelo
Analista de Sistemas.
Tripagel Com. Rep. LTDA.
marcosangelo@tripagel.com.br
Olá Marcos, qual a sua dificuldade? Ocorre algum erro?
Seria interessante você mandar sua dúvida no fórum.
Boa Tarde Raphael, como tem passado ?
Gostaria de parabeniza-lo pelos artigos e gostaria de saber quando nos dara outro exemplo de aplicaçao…
att
Obrigado Glauco! Que tipo de exemplos você nos sugere?
No meu caso Raphael, eu estou utilizando um WebService que criei e publiquei em um servidor, eu uso o FileUpload no cliente para subir um aplicativo mando via Stream, para o Webservice e ele salva lá no Servidor, mas estou com o seguinte problema.
Quando eu tento enviar o arquivo ele me retorna o seguinte erro: Ocorreu um erro ao refletir ‘arquivo’. “arquivo” é o stream do arquivo que estou enviando.
O erro da InnerException é o seguinte: {“Tipos ‘System.IO.Stream’ e ‘MeuSoft_WebRole.ProjetoUpload.Stream’ usam nome tipo XML, ‘Stream’, no espaço para nomes ‘http://tempuri.org/’. Use atributos XML para especificar um espaço para nome e/ou nome XML para o tipo.”}
De que forma posso corrigir isso?
Olá Leandro. Não consigo entender o problema que está ocorrendo. Abra um tópico no forum acessando http://csharpbrasil.com.br/forum assim e publicando parte do seu código para que todos possamos ajudar.
Abraço
Boa noite Raphael, o localhost que você chamada na aplicação do que se trata?
Alo Cristiano! E o Alias que eu dei para meu webservice. Eu poderia ter colocado qualquer outro nome na hora de referenciar o webservice. Eu poderia ter colocado por exemplo como wsMeuWebservice.
Fui claro?
Abraco
Olá Rafael Post muito bom….
Mais estou implementando ele… Estou criando um envio de e-mail automático toda vez que for executado algumas dos serviços, achei em outros artigo publicado aqui no c#Brasil e comecei a implementar porem esta apresentando alguns erros, me retorna um erro que diz assim, erro de conexão remota – falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou, então não roda meu envio de e-mail…
o código é o seguinte:
//Estancia da classe de mensagem
MailMessage Email = new MailMessage();
//Remetente
Email.From = new MailAddress(“meuEmail@gmail.com”);
//destinatário
Email.CC.Add(“MeuEmailDestino@hotmail.com”);
//corpo da mensagem
Email.Body = “Testando A aplicação para envio de email.”;
// Estancia a Classe de Envio
SmtpClient ClienteSmtp = new SmtpClient(“smtp.gmail.com”);
//Primeiro as credenciais sera falsa
ClienteSmtp.UseDefaultCredentials = false;
//Acesso ao servidor especificado
ClienteSmtp.EnableSsl = true;
// Credencial para envio por SMTP Seguro (Quando o servidor exige autenticação)
ClienteSmtp.Credentials = new System.Net.NetworkCredential(“MeuEmailServidor@gmail.com”, “SenhaDoEmail”);
//Verificando a porta Smtp
ClienteSmtp.Port = 587;
// Envia a mensagem
ClienteSmtp.Send(Email);
Olá Thalita, tudo bem?
Analisando o seu código, não encontrei nenhum problema.
Já tentou utilizar outro HOST para envio?