Fórum mvdfreitas #1823
12/01/2009
0
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
Curtir tópico
+ 0Posts
12/01/2009
Wesley Yamazack
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
Gostei + 0
12/01/2009
Matheus Freitas
Preciso que você me ensine a utilizar as funções.
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.
Gostei + 0
13/01/2009
Wesley Yamazack
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
Gostei + 0
13/01/2009
Matheus Freitas
Repito, não sei como fazer.
Está muito vago seu exemplo.
Grato.
Gostei + 0
13/01/2009
Wesley Yamazack
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
Gostei + 0
14/01/2009
Matheus Freitas
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!
Gostei + 0
14/01/2009
Wesley Yamazack
Att,
Wesley Yamazack
Gostei + 0
14/01/2009
Matheus Freitas
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 := ;
Gostei + 0
15/01/2009
Wesley Yamazack
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
Gostei + 0
15/01/2009
Matheus Freitas
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.
Gostei + 0
15/01/2009
Devmedia
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.
Gostei + 0
16/01/2009
Matheus Freitas
Ele afirma que o serviço está no ar.
Gostei + 0
16/01/2009
Wesley Yamazack
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
Gostei + 0
18/01/2009
Wesley Yamazack
Att,
Wesley Yamazack
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)