Bruno C. de Paula Consumo e Criação de Serviços SOAP Tema de Estudo • Vamos fazer um programa que acesse um web service; • Vamos Compreender a criação de web services do tipo SOAP dentro do .Net; Criação de Serviço SOAP em .Net • 1) Menu File > New Web Site > ASP.NET Web Service; • 2) Marque os métodos que serão do serviço com: [WebMethod(Description = "Este método converte de celsius para fahrenheit")] o public double CelsiusParaFahrenheit(double C) o ... o Criação de Serviço SOAP em .Net • 3) Demais parâmetros possíveis: o o o o o o BufferResponse: “bufferiza” ou não a resposta, útil quando o método envia muitas informações; CacheDuration: Número de segundos que a requisição ou resposta ficará armazenada na memória do servidor; Description: Descrição do serviço; EnableSession: Permite o armazenamento do estado via Cookie; MessageName: usado para diferenciar o nome da mensagem SOAP do nome do método. TransactionOption: Implementação de transações. Consumo de Serviço SOAP em .Net • 1) Em um projeto já existente, selecione o projeto e selecione o menu Add Web Reference; • 2) Cole o endereço do arquivo WSDL; Na PUCPR, muitas vezes você precisará salvar o arquivo WSDL antes! • 3) Será gerada uma classe de acesso ao serviço; • 4) Importante: não esqueça de configurar o web proxy! Exercício de Fixação • Faça um programa que faça uma busca no Google e retorne a popularidade de um termo; • Define-se a popularidade como o número de vezes que o termo aparece na base do Google; • A documentação para este serviço está disponível em: o http://code.google.com/apis/soapsearch/reference.html • Neste Guia, estamos fazendo o código para Windows Forms; • Se possível, crie seu código para ASP.NET. Configuração do WebProxy • Primeiramente, para poder utilizar os exemplos dentro da PUCPR você deve utilizar um WebProxy; • // Colocar no início do código • using System.Net; • ... • // Antes de chamar o serviço (pode ser no construtor da classe do Form) • // Lembre-se: proxy, login, senha e domínio são caixas de texto que você deve preencher com os valores referentes aos do proxy da PUC e ao seu login e senha. • System.Net.WebProxy proxyObject = new System.Net.WebProxy(proxy.Text); • proxyObject.Credentials = new System.Net.NetworkCredential(login.Text, senha.Text, dominio.Text); • WebRequest.DefaultWebProxy = proxyObject; Configuração do WebProxy • Nunca esqueça desse passo para que seu serviço funcione! • Use o esqueleto de código fornecido! •É o erro que vocês mais cometem! Outras maneiras de configurar o webproxy (1/4) • A linha abaixo obtém o webproxy padrão do Internet Explorer: • System.Net.GlobalProxySelection.Select = System.Net.WebProxy.GetDefaultProxy(); • System.Net.GlobalProxySelection.Select.Credentials = new System.Net.NetworkCredential(“meu login", “minha senha", "meu domínio"); • Cuidado! Não deixe sua senha na PUC no código-fonte! Outras maneiras de configurar o webproxy (2/4) • WebRequest.DefaultWebProxy = null; • System.Net.GlobalProxySelection.Select = new System.Net.WebProxy("proxy01.pucpr.br", 3129); • System.Net.GlobalProxySelection.Select.Credentia ls = new System.Net.NetworkCredential(login.Text, senha.Text, ""); • WebRequest.DefaultWebProxy.Credentials = new NetworkCredential (“meu login", “minha senha", "meu domínio"); Outras maneiras de configurar o webproxy (3/4) • System.Net.Uri proxyURI = new System.Net.Uri("http://64.202.165.130:3128"); • System.Net.GlobalProxySelection.Select = new System.Net.WebProxy(proxyURI); Outras maneiras de configurar o webproxy (4/4) • System.Net.WebProxy proxy = new System.Net.WebProxy ("proxy02.pucpr.br:3125" ); proxy.Credentials = new System.Net.NetworkCredential("SEU LOGIN", "SUA SENHA", "cwbdis"); Endereço do Web Proxy? • Para obter o proxy da PUC, acesse o arquivo: o http://www.pucpr.br/proxy.pac • Outra maneira de obter o endereço do webproxy é verificar nas opções da Internet no Internet Explorer; Passo 1 • Crie um novo projeto no Visual Studio.Net. Passo 2 • Crie uma aplicação Windows tradicional; Passo 3 • Coloque um componente que será destinado ao texto de busca, um botão e uma caixa referente ao resultado. Passo 4 • Coloque nomes significativos em cada caixa; Passo 5 • Agora, vamos fazer uma referência ao arquivo wsdl do Google, que contém a descrição de quais métodos existem no Web Service. • O arquivo está disponível em: o http://api.google.com/GoogleSearch.w sdl Passo 6 • Coloque a url no campo indicado e pesquise os métodos disponíveis. Passo 7 – IMPORTANTE!!! • A situação ao lado acontece quando você está debaixo de um servidor dfe webproxy (como a PUCPR). • Nesse caso, SALVE o arquivo wsdl em disco e carregue a partir de lá! Passo 8 (Opcional) • Você precisa usar a biblioteca System.Web.Services.dll; • Adicione a referência a essa biblioteca. Passo 9 (Opcional) • Clique duas vezes e pressione o botão ok para adicionar essa referência. Passo 10 – código de acesso ao Google Passo 16 • Obtenha uma chave no site: o http://code.google.com/apis/soapsearch/reference.html o Não está mais disponível! Passo 17 • Fim! Agora é só executar sua aplicação. • Dentro da sua aplicação, você consegue usar a busca do Google! • Qual pode ser a utilidade disso? Exercício de Fixação • Vamos criar em .Net um serviço simples que faz conversões de medidas de temperatura: o o o o Celsius => Fahrenheit; Fahrenheit => Celsius; Kelvin => Celsius; Celsius => Kelvin. Criação passo a passo • 1) Crie um novo Web Site e selecione a opção ASP.Net Web Service; Criação passo a passo • 2) Será criado um esqueleto semelhante a: Criação passo a passo • 3) Neste esqueleto, cada método do web service é representado através de um atributo [WebMethod] anotando cada método: Criação passo a passo • 4) Para testar o serviço você deve executar o arquivo com extensão asmx; • 5) Observe que o wsdl está no link Service Description. Criação passo a passo • 6) Além de criar o método, você também deve se preocupar com os parâmetros nomeados do atributo: Exemplo: [WebMethod(Description = "Este método converte de celsius para fahrenheit")] o public double CelsiusParaFahrenheit(double C) o o • • • • { return ...; } No exemplo acima o atributo Description indica uma descrição do serviço. Criação passo a passo • 7) Parâmetros nomeados possíveis: BufferResponse: “bufferiza” ou não a resposta, útil quando o método envia muitas informações; o CacheDuration: Número de segundos que a requisição ou resposta ficará armazenada na memória do servidor; o Description: Descrição do serviço; o EnableSession: Permite o armazenamento do estado via Cookie; o MessageName: usado para diferenciar o nome da mensagem SOAP do nome do método. o TransactionOption: Implementação de transações. o • Em nosso exercício vamos usar só o Description; • Complete o exercício com o código dos métodos. Links relacionados • http://code.google.com/apis/soapsearch/refere nce.html o o Serviço do Google de busca; Indisponível atualmente!