Servidor SOAP e aplicativo cliente VCL + indy demo para Delphi XE?

151

O Delphi costumava incluir uma pasta de demos para serviços da Web, mas parece não incluir mais isso.

Eu apenas tentei os projetos de demonstração do Delphi 7 ( SOAPDMServerWADum servidor com quase nenhuma interface do usuário e SOAPDMClient) e não consegui fazê-los funcionar, mesmo no Delphi 7.

Se alguém já fez um trabalho de demonstração semelhante no Delphi XE, ou no Delphi 2010, idêntico às SOAPDMServerWAD+SoapDMClientdemos antigas , trabalhando no Delphi XE, e com pelo menos a UI mínima que vem do assistente de aplicativo do Delphi SOAP Server, isso seria perfeito.

Atualização: A demo aparece até o Delphi 2010, mas usa o WAD (depurador de aplicativos da web) agora obsoleto. Tentei portá-lo para o novo Indy runtime/web-app-development-harnessing-code, mas não consigo fazê-lo funcionar. A demonstração é executada, mas o servidor não possui interface com o usuário e não parece estar executando nenhum servidor HTTP (testado usando um navegador da Web comum, via http://localhost:port/URLs. A propósito, tente pesquisar no Google por uma demonstração e esse URL será exibido , e Eu perguntei há menos de uma hora atrás, isso é assustador, google.

Atualização2 Veja minha própria resposta abaixo, um link estará disponível em breve com o código em funcionamento.

Warren P
fonte
3
[offtopic] Eu tive que criar um cliente SOAP bastante simples em Delphi há alguns meses, provou ser uma dor de cabeça e um desperdício de produtividade, sugiro procurar uma alternativa enquanto isso.
ComputerSaysNo
13
@Dorin - Usando O importador WSDL é muito fácil de criar um cliente SOAP.
Robert Love
8
@ Robert, não é a parte que está dando dor de cabeça, é a documentação, a falta de demos etc. Eu tive que aprender muito sobre o SOAP para um cliente simplista, que não me serviu muito, pelo que entendi em Java é muito mais fácil, mas ainda não tentei => Eu sou um usuário exigente do delphi.
ComputerSaysNo
5
o sabão mais fácil é .net wcf
hidden
5
Há um vídeo tutorial em edn.embarcadero.com/article/40973 . relevante?
Alex

Respostas:

39

Publiquei o conjunto completo de demos para SOAP no CodeCentral como item 28789 .

Eles contêm todas as demos SOAP da era Delphi 2007 da WebServicespasta, agora atualizadas para Delphi XE e XE2, incluindo a conversão de servidores WAD antigos em novos servidores INDY VCL. Você pensaria que isso era impressionante, exceto que não é. É realmente fácil. Basta usar o assistente para criar um novo projeto e, em seguida, adicionar a interface de serviço da web e as unidades de implementação, e quaisquer outras unidades que pertençam à demonstração antiga, ao projeto. Uma vez adicionados ao projeto, eles simplesmente funcionam. Servidores SOAP de demonstração básica são realmente fáceis de construir no Delphi. Depois de ter uma demonstração funcional, você descobrirá que é muito fácil modificá-la e ampliá-la.

A demonstração que melhor responde à pergunta que fiz acima está na SOAPDataModulesubpasta.

Os problemas básicos da demo da era de 2007 são dois:

  1. O WAD (depurador de aplicativos da web) se foi. você precisa criar um novo servidor usando o servidor Indy, para fins de demonstração ideais, poupando-o de usar o WAD (que se foi) ou configurar o ambiente ISAPI, no IIS, o que dificilmente é ideal para fins de demonstração. O novo projeto de demonstração que desenvolvi é chamado SoapDMServerINDY , e consiste em um módulo de dados (datamod_u.pas), uma unidade de interface do usuário do formulário VCL ( IndyServerVCLFormUnit.pas) e um módulo da web do Indy Server, chamado IndyServerWebModule.pas.

  2. A demo do Delphi 2007 foi interrompida graças à nova prática de ter uma subpasta Debug / Win32 na qual o executável da demo está agora, você precisa ir além. Corrigi o servidor de demonstração para avisá-lo com uma mensagem de erro se os arquivos de dados não puderem ser localizados, poupando-o do misterioso "erro de análise de XML". Também adicionei algumas checagens de erros em algumas das demos, para que ele diga que você precisa instalar o interbase para que esta demonstração funcione, já que algumas demos exigem que o Interbase esteja instalado e em execução e que um alias chamado IBLOCAL exista, e de preferência uma tabela chamada EMPLOYEEpara existir.

insira a descrição da imagem aqui

Os elementos desta demonstração são um servidor ( SoapDMServerINDY , com base no código de SOAPDMServerWAD) e o cliente SOAPDMClient que se conecta à demonstração e tem duas páginas, uma página mostrará o acesso básico aos dados por meio de um conjunto de dados remoto do DBGrid + e a segunda A página mostra como chamar um método SOAP customizado.

Para usar a demonstração: Você precisa iniciar o servidor, clique no botão Iniciar, inicie o cliente e clique em Conectar.

insira a descrição da imagem aqui

Warren P
fonte
1
Bravo pelo esforço! Se você não pode postar a demonstração fixa, talvez um diff / patch faça?
Chris Thornton
8
É um antigo princípio da comunidade de código aberto; Esfregue sua própria coceira e compartilhe os resultados, e espero que isso não apenas beneficie a todos, como também construa uma comunidade, com o tempo, que pode fazer coisas juntas que não poderíamos fazer sozinhas. Então, envie-me relatórios de erros, se você encontrar problemas.
Warren P