Fórum mvdfreitas #1823

12/01/2009

0

Boa tarde,

Tenho que implementar em um cliente um consumo de webservice.
Endereço: http://200.96.95.3:8088/Simulacao.asmx.

Trabalho com o Delphi 7 e até consegui importar o wdsl http://200.96.95.3:8088/Simulacao.asmx?WSDL
Só que não sei usar.

Ou seja, preciso que o amigo gere um exemplo para que eu possa implementar, no meu projeto.

Grato.
Matheus Freitas

Matheus Freitas

Responder

Posts

12/01/2009

Wesley Yamazack

Boa tarde,

Matheus,

Primeira coisa que você vai fazer é transformar o descritor de serviço(WSDL) em um .pas. Exemplo.

Abra o delphi.
  - Menu File/New/Other
      - Localize a aba WebService.
             WSDLImporter e de OK
 

Irá abrir uma janela com um caixa de testo. Location of WSDL File or URL, coloque aqui o caminho do WSDL. Feito isso será gerado uma unit com os metodos do WSDL, basta você os envocar para consegui consumir o mesmo.

Att,

Wesley Yamazack
 
Responder

Gostei + 0

12/01/2009

Matheus Freitas

Isso eu já fiz.
Preciso que você me ensine a utilizar as funções.
Responder

Gostei + 0

12/01/2009

Matheus Freitas

// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://200.96.95.3:8088/Simulacao.asmx?WSDL
// Encoding : utf-8
// Version  : 1.0
// (22/12/2008 17:46:07 - 1.33.2.5)
// ************************************************************************ //

unit Simulacao;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type

  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Borland types; however, they could also
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:string          - "http://www.w3.org/2001/XMLSchema"
  // !:double          - "http://www.w3.org/2001/XMLSchema"

  Parametro            = class;                 { "http://www.sicred.com.br/renner/" }



  // ************************************************************************ //
  // Namespace : http://www.sicred.com.br/renner/
  // ************************************************************************ //
  Parametro = class(TRemotable)
  private
    FwsStrUsuario: WideString;
    FwsStrSenha: WideString;
    FwsStrAgencia: WideString;
    FwsStrContrato: WideString;
    FwsStrNroIdentificacao: WideString;
    FwsStrSimulacao: WideString;
    FwsDataSimulacao: WideString;
    FwsStrEmpresa: WideString;
    FwsStrParcela: WideString;
    FwsStrAssessoria: WideString;
    FwsStrDataVctoSimulacao: WideString;
    FwsStrSituacao: WideString;
    FwsStrVctoParcela: WideString;
    FwsDblPrestacao: Double;
    FwsDblJurosMora: Double;
    FwsDblTxJurosMora: Double;
    FwsDblMulta: Double;
    FwsDblTxMulta: Double;
    FwsDblDespesas: Double;
    FwsDblTotal: Double;
    FwsDblComissao: Double;
    FwsDblTotalFinal: Double;
    FwsStrCodigoAssessoria: Double;
    FwsStrDataOcorrencia: WideString;
    FwsStrOcorrencia: WideString;
  published
    property wsStrUsuario: WideString read FwsStrUsuario write FwsStrUsuario;
    property wsStrSenha: WideString read FwsStrSenha write FwsStrSenha;
    property wsStrAgencia: WideString read FwsStrAgencia write FwsStrAgencia;
    property wsStrContrato: WideString read FwsStrContrato write FwsStrContrato;
    property wsStrNroIdentificacao: WideString read FwsStrNroIdentificacao write FwsStrNroIdentificacao;
    property wsStrSimulacao: WideString read FwsStrSimulacao write FwsStrSimulacao;
    property wsDataSimulacao: WideString read FwsDataSimulacao write FwsDataSimulacao;
    property wsStrEmpresa: WideString read FwsStrEmpresa write FwsStrEmpresa;
    property wsStrParcela: WideString read FwsStrParcela write FwsStrParcela;
    property wsStrAssessoria: WideString read FwsStrAssessoria write FwsStrAssessoria;
    property wsStrDataVctoSimulacao: WideString read FwsStrDataVctoSimulacao write FwsStrDataVctoSimulacao;
    property wsStrSituacao: WideString read FwsStrSituacao write FwsStrSituacao;
    property wsStrVctoParcela: WideString read FwsStrVctoParcela write FwsStrVctoParcela;
    property wsDblPrestacao: Double read FwsDblPrestacao write FwsDblPrestacao;
    property wsDblJurosMora: Double read FwsDblJurosMora write FwsDblJurosMora;
    property wsDblTxJurosMora: Double read FwsDblTxJurosMora write FwsDblTxJurosMora;
    property wsDblMulta: Double read FwsDblMulta write FwsDblMulta;
    property wsDblTxMulta: Double read FwsDblTxMulta write FwsDblTxMulta;
    property wsDblDespesas: Double read FwsDblDespesas write FwsDblDespesas;
    property wsDblTotal: Double read FwsDblTotal write FwsDblTotal;
    property wsDblComissao: Double read FwsDblComissao write FwsDblComissao;
    property wsDblTotalFinal: Double read FwsDblTotalFinal write FwsDblTotalFinal;
    property wsStrCodigoAssessoria: Double read FwsStrCodigoAssessoria write FwsStrCodigoAssessoria;
    property wsStrDataOcorrencia: WideString read FwsStrDataOcorrencia write FwsStrDataOcorrencia;
    property wsStrOcorrencia: WideString read FwsStrOcorrencia write FwsStrOcorrencia;
  end;


  // ************************************************************************ //
  // Namespace : http://www.sicred.com.br/renner/
  // soapAction: http://www.sicred.com.br/renner/%operationName%
  // transport : http://schemas.xmlsoap.org/soap/http
  // binding   : SimulacaoSoap
  // service   : Simulacao
  // port      : SimulacaoSoap
  // URL       : http://200.96.95.3:8088/Simulacao.asmx
  // ************************************************************************ //
  SimulacaoSoap = interface(IInvokable)
  [{8EEFA9E8-0312-405F-CBCC-3D7E0B130B62}]
    function  Simular(const usuario: WideString; const senha: WideString; const parametro: Parametro): WideString; stdcall;
    function  OcorrenciaInserir(const usuario: WideString; const senha: WideString; const parametro: Parametro): WideString; stdcall;
    function  Despesas(const usuario: WideString; const senha: WideString; const parametro: Parametro): Double; stdcall;
  end;

function GetSimulacaoSoap(UseWSDL: Boolean=System.False; Addr: string=; HTTPRIO: THTTPRIO = nil): SimulacaoSoap;


implementation

function GetSimulacaoSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): SimulacaoSoap;
const
  defWSDL = http://200.96.95.3:8088/Simulacao.asmx?WSDL;
  defURL  = http://200.96.95.3:8088/Simulacao.asmx;
  defSvc  = Simulacao;
  defPrt  = SimulacaoSoap;
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = ) then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as SimulacaoSoap);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


initialization
  InvRegistry.RegisterInterface(TypeInfo(SimulacaoSoap), http://www.sicred.com.br/renner/, utf-8);
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(SimulacaoSoap), http://www.sicred.com.br/renner/%operationName%);
  RemClassRegistry.RegisterXSClass(Parametro, http://www.sicred.com.br/renner/, Parametro);

end.
Responder

Gostei + 0

13/01/2009

Wesley Yamazack

Boa tarde, Estava olhando o WSDL, e para você utilizar ele tem que saber quais são os parametros válidos para utlizar o mesmo, nesta função :

function GetSimulacaoSoap(UseWSDL: Boolean=System.False; Addr: string=; HTTPRIO: THTTPRIO = nil): SimulacaoSoap;

 Você tem que saber quais são os parametros a serem passados. descobrindo eles fica facil de se consumir o WSDL.

Crie uma variável do Tipo SimulacaoSoap.

Exemplo :

Var
   ClasSimulacao : SimulacaoSoap;
begin
  ClasSimulacao := SimulacaoSoap.Create;
  ClasSimulacao := GetSimulacaoSoap(P1,p2,p3);

end;

Att,

Wesley Yamazack
Responder

Gostei + 0

13/01/2009

Matheus Freitas

Preciso que você faça um exemplo completo simulando o consumo desse webservice.
Repito, não sei como fazer.
Está muito vago seu exemplo.

Grato.
Responder

Gostei + 0

13/01/2009

Wesley Yamazack

Boa noite, vamos lá.

   Primeiramente coloque um botão e um edit no seu formulário. Feito isso no evento onclick do botão bote o codigo abaixo

Var
  P : Parametro;
begin
  P := Parametro.Create;
  P.wsStrUsuario := usuario;
  P.wsStrSenha   := senha;
  Edit1.Text := GetSimulacaoSoap.Simular(P.wsStrUsuario,P.wsStrSenha,P);


Obs : O seguinte erro irá ocorrer quando você clicar no botão, pois os dados não são os corretos.

falha na autenticação.


  Feito isso, você terá que saber quais são os valores verdadeiros para poder consumir este WSDL. Mas isso são informações do próprio WSDL.

Att,
Wesley Yamazack


Responder

Gostei + 0

14/01/2009

Matheus Freitas

Wesley,

Segue o email que recebi do cliente, favor ler:

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}     De: cristiano [mailto:cristiano@bancorenner.com.br]
Enviada em: segunda-feira, 22 de dezembro de 2008 16:12
Para: Henrique; antonio; Fernando (CPD); Leandro (CPD Banco); Marco Raymundo
Assunto: Senha de acesso ao Webservice   Henrique

Favor encaminhar as senhas abaixo para o técnico da TI

Abaixo as senhas de acesso para a webservice do banco Renner:

Primeira senha (universal):

Usuario - user1
Senha - 123


Segunda senha:

Cobrance
Usuario - CE0038
senha - RENNER18


Duvidas favor ligar para Leandro ou Marco (51) 32.87.33.48

Atenciosamente.   Cristiano Fraga
Supervisor de cobrança
Rua Marechal Floriano Peixoto, 185 - 9º Andar
Centro - Porto Alegre - RS - CEP: 90020-061
Fone: 51 3287-3377
E-Mail: cristiano@rennerpromotora.com.br

REPITO - PRECISO QUE VOCÊ ME ENCAMINHE UM EXEMPLO COMPLETO, NÃO DESSA FORMA COMO VOCÊ ESTÁ ENVIANDO.

AS SENHAS ESTÃO AÍ.

VALEU!



Responder

Gostei + 0

14/01/2009

Wesley Yamazack

Fiz o exemplo, com o usuário e senha, mas não funcionou, para que de certo, eles tem que te passar os dados por completo, todos os paramettros que tem la na classe, como Agencia, Empresa, etc, pois estes parametros são necessário também, não adiantou somente o usuário e senha, peça um auxilio para o pessoal do suporte, perguntando quais são os parametros necessários para poder consumir o WSDL.


Att,

Wesley Yamazack
Responder

Gostei + 0

14/01/2009

Matheus Freitas

ok utilize estes parametros e vamos ver o que acontece.
Se precisar de algo mais, reporte.
Se estiver tudo aí e der algum problema, printe a tela do erro que encaminho para eles.

  p.wsStrAgencia := 0002;
  p.wsStrContrato := 00000213105;
  p.wsStrNroIdentificacao := 1;
  p.wsStrSimulacao := 1;
  p.wsDataSimulacao := 29/12/2008;
  p.wsStrEmpresa := 40;
  p.wsStrParcela := 005;
  p.wsStrAssessoria := 40;
  p.wsStrDataVctoSimulacao := 29/12/2008;
  p.wsStrSituacao := A;
  p.wsStrVctoParcela := 09/11/2008;
  p.wsDblPrestacao := 602.72;
  p.wsDblJurosMora := 120.54;
  p.wsDblTxJurosMora := 12;
  p.wsDblMulta := 12.05;
  p.wsDblTxMulta := 2;
  p.wsDblDespesas := 6.00;
  p.wsDblTotal := 742.63;
  p.wsDblComissao := 74.26;
  p.wsDblTotalFinal := 816.89;
  p.wsStrCodigoAssessoria := 40;
  p.wsStrDataOcorrencia := 29/12/2008;
  p.wsStrOcorrencia := ;

Responder

Gostei + 0

15/01/2009

Wesley Yamazack

Matheus,

 Segue exemplo do Clique do Botão.

Var     P : Parametro;
begin
  P := Parametro.create;
  P.wsStrUsuario :=  user1;
  p.wsStrSenha := 123;
  p.wsStrAgencia := 0002;
  p.wsStrContrato := 00000213105;
  p.wsStrNroIdentificacao := 1;
  p.wsStrSimulacao := 1;
  p.wsDataSimulacao := 29/12/2008;
  p.wsStrEmpresa := 40;
  p.wsStrParcela := 005;
  p.wsStrAssessoria := 40;
  p.wsStrDataVctoSimulacao := 29/12/2008;
  p.wsStrSituacao := A;
  p.wsStrVctoParcela := 09/11/2008;
  p.wsDblPrestacao := 602.72;
  p.wsDblJurosMora := 120.54;
  p.wsDblTxJurosMora := 12;
  p.wsDblMulta := 12.05;
  p.wsDblTxMulta := 6.0;
  p.wsDblTotal := 742.6;
  p.wsDblComissao := 74.26;
  p.wsDblTotalFinal := 816.89;
  p.wsStrCodigoAssessoria := 40;
  p.wsStrDataOcorrencia := 29/12/2008;
  p.wsStrOcorrencia := ;  
  edit1.text := GetSimulacaoSoap.Simular(p.wsStrUsuario,p.wsStrSenha,p);
O mesmo retorna o seguinte erro.


---------------------------
Debugger Exception Notification
---------------------------
Project PrjWEBService.exe raised exception class ERemotableException with message Server was unable to process request. ---> Object reference not set to an instance of an object.. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------
Att   Wesley Yamazack
Responder

Gostei + 0

15/01/2009

Matheus Freitas

É meu amigo, a coisa não é tão simples quanto parece.
Anexo, resposta do cliente.
Como faço para te mandar arquivos do tipo pdf?
Tem situação que a imagem não cabe toda na tela.

Valeu.
Responder

Gostei + 0

15/01/2009

Devmedia

Matheus,
não é possível enviar e-mails para o consultor. Toda documentação e comentários deve ser postada dentro do sistema.
Caso seja necessário, grave um video.
Responder

Gostei + 0

16/01/2009

Matheus Freitas

Tu viu a tela que te mandei mostrando a resposta do cliente?
Ele afirma que o serviço está no ar.

Responder

Gostei + 0

16/01/2009

Wesley Yamazack

Matheus,
  Não recebi nenhuma imagem não, até porque não esta no nosso post.

  Lembramos que o sistema de consultoria, visa auxiliar o cliente em eventuais problemas que possam surgir no decorrer de uma aplicação, que no seu caso é consumir um WebService. O que você propõe desde o inicio do chamado, é que eu desenvolva todo o sistema para você desde o inicio, o que fica inviável uma vez que é desconhecido por mim toda regra de negocio, e os procedimentos envolvidos na rotina.

  Sua dúvida inicial era como consumir um WebServices, foi explicado como fazer. Agora os erros decorrente neste processo não dizem respeito não dizem respeito ao que foi desenvolvido, e sim como se consumir um WebService.

  Para resolver este tipo de problema, você deve entrar em contato com o desenvolvedor do WebService, para que ele te mostre o caminho das pedras.
 
  O erro que esta acontecendo, não tem como eu saber o que é. Pois não conheço o mesmo, blz?

  De qualquer forma, continuamos a disposição para esclarecimentos.

Att,

Wesley Yamazack

Responder

Gostei + 0

18/01/2009

Wesley Yamazack

Matheus estamos aguardo sua resposta, para podermos concluir o chamado.

Att,

Wesley Yamazack
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar