Fórum Como consumir web service delphi 7 Enterprise #9659
29/09/2009
0
var
Y1, Y2, Y3 : integer;
B: STRING;
x1: MacMensageria;
begin {FcodigoAssessoriaCyber: Integer;
FcontaCorrente: Integer;
FcodigoIdentificacaoOperador: string;
FtipoPessoa: string;
FcpfCnpj: Integer;} Y1:=1;
Y2:=191;
B:='F'; X1:=(HTTPRIO1 as MacMensageria);
memoBusca.Text:=(HTTPRIO1 as MacMensageria).consultarInformacoesCobranca(consultarinformacoescobrancarequest2(1,1,' ',B,191));
// consularinformacoesCobrancarequest2. parametros... // (HTTPRIO1 as MacMensageria).consultarInformacoesCobranca(Y1,Y1,B,B,Y2);
// memoBusca.Text:=(HTTPRIO1 as MacMensageria).consultarAcordo(1,'',' ',99999999999);
// memoBusca.Text:=x1.consultarInformacoesCobranca.
//.consultarInformacoesCobranca('1','1','0','F',191); end;
Obrigado! Henrique 11 6725-3401
Henrique Rocha
Curtir tópico
+ 0Posts
29/09/2009
Rodrigo Mourão
Você importou o WSDL utilizando o WSDL importer. Se sim pode me enviar o endereco do WSDL para que ue possa improtar o ver como e gerado. Se não me informe para que eu possa mostra-lo como faz. Não há necessidade de usar o HTTPRIO isso fica encapsulado na classe que ele gerar.
No aguardo !!
Abs!!
Gostei + 0
29/09/2009
Henrique Rocha
Sim importei o WSDL utilizando o WSDL importer via dos, pois pelo delphi não consegui.
o arquivo resultado *.pas esta no meu disco virtual, você tem acesso ao disco,
ou qual email posso mandar para você.
Gostei + 0
29/09/2009
Rodrigo Mourão
Mais informações aqui: https://www.devmedia.com.br/imagens/videos/4/Video%20disco%20virtual.htm
Abs!
Gostei + 0
29/09/2009
Henrique Rocha
segue o link http://video.devmedia.com.br/discovirtual/18998/Unit%20webservices.zip
Desculpe, ainda estou aprendendo a usar a ferramenta.
Obrigado.
Gostei + 0
30/09/2009
Rodrigo Mourão
Eu peguei como exemplo o metodo atualiza cliente, como nao sei qual valor passar o codigo abaixo e ficticio. O que vc precisa saber e que os metodos pedem como parametros objetos. Por exemplo o metodo atualiza cliente pede um parametro do tipo atualizarClienteRequest2 e me retorna um atualizarClienteResponse2
Então eu crieu uma variavel AtlzCliente do tipo atualizarClienteRequest2 e uma variavel Resp do tipo atualizarClienteResponse2,
Antes de passar o parametro AtlzCliente para a funcao eu tenho que colocar os valores. Eu passei so alguns como exemplo, voce tera que passar todos os que são obrigatórios.
Depois chamei a funcao atualizarCliente desta maneira: GetMacMensageria().atualizarCliente(AtlzCliente); veja que eu passo o objeto AtlzCliente que acabei de configurar.
Isso me retorna um atualizarClienteResponse2 que eu coloquei na veriavel resp.
Depois peguei a propriedade Mensagem e coloquei no memo.
Veja o codigo.
var
AtlzCliente: atualizarClienteRequest2;
Resp: atualizarClienteResponse2;
begin
AtlzCliente.codigoAssessoriaCyber := 0;
AtlzCliente.contaCorrente := '00000';
AtlzCliente.codigoIdentificacaoOperador := '0000';
AtlzCliente.tipoPessoa := 'X';
AtlzCliente.endereco.nomeLogradouro := 'endereco';
AtlzCliente.endereco.nomeBairro := 'bairro';
Resp := GetMacMensageria().atualizarCliente(AtlzCliente);
Memo1.Lines.Add(Resp.mensagemRetorno.mensagem);
end;
Novamente, eu passei valores ficticios, vc tera que colcoar valores reais ai.
Espero ter ajudado.
abs!!
Gostei + 0
30/09/2009
Henrique Rocha
Rodrigo,
Consegui acessar as variaveis, porém quando tento consumir o web service esta dando uma mensagem de
erro no retorno das informações, como segue:
abaixo procedimento OK...
procedure TFrmPAcesso.SpeedButton9Click(Sender: TObject);
var
ConsulDadosCobranca: consultarInformacoesCobrancaRequest2;
RespDC:consultarInformacoesCobrancaResponse2;
begin
{ property codigoAssessoriaCyber: Integer Index (IS_UNQL) read FcodigoAssessoriaCyber write FcodigoAssessoriaCyber;
property contaCorrente: Integer Index (IS_UNQL) read FcontaCorrente write FcontaCorrente;
property codigoIdentificacaoOperador: string Index (IS_UNQL) read FcodigoIdentificacaoOperador write FcodigoIdentificacaoOperador;
property tipoPessoa: string Index (IS_UNQL) read FtipoPessoa write FtipoPessoa;
property cpfCnpj: Integer Index (IS_UNQL) read FcpfCnpj write FcpfCnpj; }
ConsulDadosCobranca.codigoAssessoriaCyber:=1;
ConsulDadosCobranca.contaCorrente:=1;
ConsulDadosCobranca.codigoIdentificacaoOperador:=' ';
ConsulDadosCobranca.tipoPessoa:='F';
ConsulDadosCobranca.cpfCnpj:=191;
RespDC := GetMacMensageria().consultarInformacoesCobranca(ConsulDadosCobranca);
memoBusca.Lines.Add(RespDC.mensagemRetorno.mensagem);
end;
mensagem de erro quando ele passa pela função abaixo
function GetMacMensageria(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): MacMensageria;
const
{ Original para ser usado em produção
defWSDL = 'HSBCMacMensageria.wsdl';
defURL = 'http://www.hsbc.com.br/MacMensageria';
defSvc = 'HSBCMacMensageria';
defPrt = 'MacMensageriaSOAP'; }
// Dados para usar em desenvolvimento
defWSDL = 'HSBCMacMensageria.wsdl';
defURL = 'http://localhost:8088/mockMacMensageriaSOAP';
defSvc = 'HSBCMacMensageria';
defPrt = 'MacMensageriaSOAP';
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 MacMensageria);
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;
ERRO: Debugger Exception Notification
Project x.exe raised exception class ESOAPDomConvertError with message
'Conversion from class TSpeedButton to SOAP is not supported - SOAP classes
must derive from TRemotable'. Process stopped. Use Step or Rum to continue.
Pode me ajudar?
Obrigado.
Henrique
11 6725-3401
Gostei + 0
01/10/2009
Rodrigo Mourão
Pela mensagem de errro e como se vc estivesse tentando enviar para o WS um Objeto do Tipo TSpeedButton. O problema é que no código que vc enviou não vejo isso. Muito Estranho.
Verifique se nao tem um speedbutton com um nome que possa estar em conflito com o nome das classes do WS.
Abs!!
Gostei + 0
01/10/2009
Henrique Rocha
Rodrigo,
Pesquisei na internet e esse erro e achei isso:
https://forums.codegear.com/thread.jspa?threadID=2231
mas não sei como resolver.
Peço sua ajuda.
Obrigado.
Henrique
Gostei + 0
02/10/2009
Rodrigo Mourão
Tente o seguinte:
procedure TFrmPAcesso.SpeedButton9Click(Sender: TObject);
var
ConsulDadosCobranca: consultarInformacoesCobrancaRequest2;
RespDC:consultarInformacoesCobrancaResponse2;
begin
ConsulDadosCobranca := consultarInformacoesCobrancaRequest2.create;
RespDC := consultarInformacoesCobrancaResponse2.create;
ConsulDadosCobranca.codigoAssessoriaCyber:=1;
ConsulDadosCobranca.contaCorrente:=1;
ConsulDadosCobranca.codigoIdentificacaoOperador:=' ';
ConsulDadosCobranca.tipoPessoa:='F';
ConsulDadosCobranca.cpfCnpj:=191;
RespDC := GetMacMensageria().consultarInformacoesCobranca(ConsulDadosCobranca);
memoBusca.Lines.Add(RespDC.mensagemRetorno.mensagem);
ConsulDadosCobranca.FREE;
RespDC.FREE;
end;
ABS
Gostei + 0
02/10/2009
Henrique Rocha
Tentei com esse novo codigo e agora esta dando outro erro, conforme seque:
o codigo:
Project X.exe raised exception class EDOMParseError with
message 'End tag 'p' does not match the start tag 'body'.
Line: 1
<html><body><p>There are currently 1 run'. Process stopped. etc...
Outra coisa, esse web service retorna varias informações como os XML abaixo, na verdade
eu quero pegar as informações individuais para montar um tela onde o usuario possa
ler de forma mais clara, por exemplo:
no arquivo Response.XML
<indicadorFuncionarioHSBC>?</indicadorFuncionarioHSBC>
<indicadorBloqueioJudicial>?</indicadorBloqueioJudicial>
<indicadorGrupoEconomico>?</indicadorGrupoEconomico>
<indicadorGradVencimento>?</indicadorGradVencimento>
Tela:
Indicador de Funcionario: S
Bloqueio Judicial: S
como eu acesso esses dados?
Rodrigo, desculpa se estou fazendo mais perguntas eu não sei até onde
posso perguntar dentro deste chamado, se não estiver neste escopo
eu faço outro chamdado, OK.
Mais um vez obrigado.
segue o XML:
Request.XML
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hsb="http://www.hsbc.com.br/HSBCMacMensageria/">
<soapenv:Header/>
<soapenv:Body>
<hsb:consultarInformacoesCobrancaRequest>
<codigoAssessoriaCyber>?</codigoAssessoriaCyber>
<contaCorrente>?</contaCorrente>
<codigoIdentificacaoOperador>?</codigoIdentificacaoOperador>
<tipoPessoa>?</tipoPessoa>
<cpfCnpj>?</cpfCnpj>
</hsb:consultarInformacoesCobrancaRequest>
</soapenv:Body>
</soapenv:Envelope>
Response.XML
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hsb="http://www.hsbc.com.br/HSBCMacMensageria/">
<soapenv:Header/>
<soapenv:Body>
<hsb:consultarInformacoesCobrancaResponse>
<!--Zero or more repetitions:-->
<dadosCliente>
<indicadorFuncionarioHSBC>?</indicadorFuncionarioHSBC>
<indicadorBloqueioJudicial>?</indicadorBloqueioJudicial>
<indicadorGrupoEconomico>?</indicadorGrupoEconomico>
<indicadorGradVencimento>?</indicadorGradVencimento>
</dadosCliente>
<!--Zero or more repetitions:-->
<dadosContrato>
<nrPagina>?</nrPagina>
<indicadorUltimaPagina>?</indicadorUltimaPagina>
<!--1 or more repetitions:-->
<contratos>
<siglaAplicativo>?</siglaAplicativo>
<nrContrato>?</nrContrato>
<qtdeDiasAtraso>?</qtdeDiasAtraso>
<bduUnidadeOperadora>?</bduUnidadeOperadora>
<dataVencimento>?</dataVencimento>
<codigoProduto>?</codigoProduto>
<sitCobranca>?</sitCobranca>
<saldoAtualizado>?</saldoAtualizado>
<valorLimiteCredito>?</valorLimiteCredito>
<dataVencimentoLimiteCredito>?</dataVencimentoLimiteCredito>
<qtdeParcelasEmAtraso>?</qtdeParcelasEmAtraso>
<qtdeParcelasPagas>?</qtdeParcelasPagas>
<qtdeParcelasAVencer>?</qtdeParcelasAVencer>
<nomeAssessoriaCyber>?</nomeAssessoriaCyber>
<dddAssessoriaCyber>?</dddAssessoriaCyber>
<telAssessoriaCyber>?</telAssessoriaCyber>
<nomeCredenciadoJsg>?</nomeCredenciadoJsg>
<dddCredenciadoJsg>?</dddCredenciadoJsg>
<telCredenciadoJsg>?</telCredenciadoJsg>
<indicadorElegibilidadeMAC>?</indicadorElegibilidadeMAC>
<indicadorAcordoAndamento>?</indicadorAcordoAndamento>
<!--1 or more repetitions:-->
<parcelas>
<nossoNumero>?</nossoNumero>
<dataVencimento>?</dataVencimento>
<valorOrigem>?</valorOrigem>
<valorAtualizado>?</valorAtualizado>
</parcelas>
</contratos>
</dadosContrato>
<!--Zero or more repetitions:-->
<historicoAcordo>
<numeroAcordo>?</numeroAcordo>
<dataNegociacao>?</dataNegociacao>
<tipoOperacao>?</tipoOperacao>
<situacaoOperacao>?</situacaoOperacao>
<codigoDecisao>?</codigoDecisao>
<dataSituacao>?</dataSituacao>
<valorAcordo>?</valorAcordo>
<qtdeParcelas>?</qtdeParcelas>
<valorParcelas>?</valorParcelas>
<codigoOrigemAcordo>?</codigoOrigemAcordo>
<!--1 or more repetitions:-->
<acordosContrato>
<siglaAplicacao>?</siglaAplicacao>
<numeroContrato>?</numeroContrato>
<valorAcordo>?</valorAcordo>
</acordosContrato>
</historicoAcordo>
<mensagemRetorno>
<returnCode>?</returnCode>
<reasonCode>?</reasonCode>
<mensagem>?</mensagem>
</mensagemRetorno>
</hsb:consultarInformacoesCobrancaResponse>
</soapenv:Body>
</soapenv:Envelope>
Gostei + 0
03/10/2009
Rodrigo Mourão
Se e o XML que veio de retorno do Web Service entao quem tem que alterar e quem fez o WS.
Quanto a pegar os valores peço que abra outro chamado pois cada duvida tem que ser sanada em um chamado exclusivo.
Abs!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)