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 MarcondesO 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;