Desenvolvimento - Delphi

Delphi: Como usar o PocketSOAP para conectar-se a um serviço simples de SOAP?

O SOAP é um protocolo para a troca de mensagens entre programas, usando uma rede de comunicação. Este é um dos protocolos usados na criação de WebServices.

por Alexandre Rocha Lima e Marcondes



O SOAP é um protocolo para a troca de mensagens entre programas, usando uma rede de comunicação. Este é um dos protocolos usados na criação de WebServices. Geralmente servidores SOAP são implementados utilizando-se servidores HTTP, embora isto não seja uma restrição para funcionamento do protocolo. As mensagens SOAP são documentos XML que aderem a uma especificação fornecida pelo W3C (http://www.w3c.org).

O PocketSOAP é um projeto de Software Livre seguindo a licença do Mozilla (MPL) que implementa um componente COM que age como cliente SOAP para sistemas da família Windows. Originalmente criado para funcionar em PocketPC (daí o nome), há também uma versão Win32 que funciona em Windows 95/98/Me/NT4/2000/XP/2003. O pacote inclui a implementação de transporte HTTP 1.para fazer pedidos SOAP baseados em HTTP, entretanto a implementação do transporte está separada da implementação do SOAP, então diversos outros transportes podem ser facilmente adicionados. O excelente parser de XML Expat, de James Clark, é usado para interpretar as respostas das mensagens SOAP.

Para usar o PocketSOAP, Primeiramente você deve fazer o download e instalar o componente (http://www.4s4c.com/pocketsoap/), então deve importar o COM, seguindo os screenshots, para criar o arquivo PocketSOAP_TLB:

1. Vá ao menu "Project" -> "Import Type Library..."

2. Quando abrir o diálogo, marque o checkbox "Generate Component Wrapper" e selecione "PocketSOAP 1.x.x Type Library", então clique no botão "Create Unit".

3. Agora grave o arquivo PocketSOAP_TLB para o uso posterior.

Agora você pode criar um novo projeto e colocar o arquivo PocketSOAP_TLB nas cláusulas de uso (uses). O exemplo que segue conecta-se a um serviço SOAP para pegar o valor da cotação de ações em http://xmethods.net.

uses PocketSOAP_TLB; 
Declare as seguintes variáveis num método qualquer, à sua escolha:
var 
  env: ISOAPEnvelope; 
  http: IHTTPTransport; 
  params: ISOAPNodes; 
  node: ISOAPNode; 
  Value: OLEVariant; 
  serialize: WideString; 
para criar o wrapper do serviço SOAP, use o seguinte código:
begin 
  env := CoCoEnvelope.Create; 
  env.SetMethod("getQuote", "urn:xmethods-delayed-quotes"); 
  env.Get_Parameters(params); 
  params.Create("symbol", "INTC", "", "", "", node); 
Para criar o manipulador de transporte HTTP, use o seguinte código:
  http := CoHTTPTransport.Create; 
  http.Set_SOAPAction(""); 
  env.Serialize(serialize); 
  http.Send("http://services.xmethods.net:80/soap", serialize); 

Para pegar o resultado da chamada SOAP, use o seguinte código:

  env.Parse(http, ""); 
  env.Get_Parameters(params); 
  node := CoCoSoapNode.Create; 
  params.Get_Item(0, node); 
  node.Get_Value(Value); 
  ShowMessage(Value); 
end;
Alexandre Rocha Lima e Marcondes

Alexandre Rocha Lima e Marcondes - Um empreendedor que está aprendendo e usando metodologias de Lean Startup, metodologias Ágeis, gerenciamento de projetos e administração de empresas para construir uma empresa de segurança que tem o produto de segurança familiar (controle parental) mais eficiente e simples de usar - o Kidux. Para isto, tem estudado o comportamento no mundo digital (Internet e Celular), efeitos da pornografia no cérebro humano e na sociedade, educação de crianças, desenvolvimento da personalidade humana e vários assuntos relacionados. Coach de executivos e profissionais de sucesso com 18 anos de experiência na área de Tecnologia da Informação. Mais de 10.000 horas de vivência como desenvolvedor de software e mais de 1000 pessoas treinadas na área. Sua vasta experiência com grupos de trabalho remoto em diversas configurações proporcionou o envolvimento em projetos com participantes em 4 continentes e mais de 35 países. Reconhecido pela qualidade de seus produtos e treinamentos. Formação Profissional em Coaching com Eliana Dutra e Cursos de Formação Internacional em Coaching pelo Integrated Coaching Institute (ICI) - Rhandy Di Stéfano. Facilitador Licenciado pela Corporate Coach U International (CCUI). Consultor em Tecnologia da Informação com Graduação em Tecnologia em Processamento de Dados. Slideshare: http://www.slideshare.net/alexandre.marcondes Facebook: http://www.facebook.com/AlexandreRLMarcondes LinkedIn: http://www.linkedin.com/in/alexandremarcondes