Fórum Consumir webservice com certificado???? #9017

01/09/2009

0

Amigos,

Utilizo Delphi 6 em Windows XP

Como faço para consumir webservice com certificado digital?

Tenho o seguinte código:


   Memo1.Lines.Clear;
   Memo1.Lines.LoadFromFile( FileNameEdit1.FileName );

   defWSDL := 'https://wsh.orizonbrasil.com.br/wstiss/v20201/TransmiteMensagem?wsdl';
   defSvc  := 'tissTransmiteMensagem';
   defPrt  := 'tissTransmiteMensagem_Port';

   MyObj := CreateOleObject( 'MSSOAP.SoapClient30' );
   MyObj.ClientProperty('ServerHTTPRequest') := True;

   sc.MSSoapInit( defWSDL, defSvc, defPrt );

   sc.ConnectorProperty('Timeout') := 60000;

   r := TStringList.Create;
   r.Text := sc.tissTransmiteMensagem_Operation( Memo1.text );
   r.SaveToFile( 'resposta.xml' );


Só que acusa o seguinte erro:

---------------------------
Transmens_orizon
---------------------------
Connector:Bad certificate. HRESULT=0x800A1529 - Client:An unanticipated error occurred during the processing of this request. HRESULT=0x800A1529 - Client:Sending the Soap message failed or no recognizable response was received HRESULT=0x800A1529 - Client:Unspecified client error. HRESULT=0x800A1529.
---------------------------
OK  
---------------------------

Fico no aguardo

Obrigado

Edson



Edson Santos

Edson Santos

Responder

Posts

02/09/2009

Rodrigo Mourão

Oi amigo, desculpe a demora.

Eu não tenho o Delphi 6 aqui por isso não fiz o teste aqui. Mas me diz uma coisa, eu cosumo WebService importando o WSDL. Assim poderemos ver os metodos que serão disponibilizados.


Como eu falei não tenho aqui o Delphi 6 mas vrifique no menu File->New->Other na aba WebService verifique se há o WsdlImporter.  Se houver digite o endereço wsdl importe, gere a unit e me envie para eu analisar. Se quiser e puder claro me envie o endereço wsdl para eu verificar.

No delphi 2010 agora temo um utilitário que ao importar um WSDL com metodos que requerem o certificado digital ele já solicita o certificado. Em versões anteriores a coisa e mais complicada mas vamos ver se podemos lhe ajudar.

Ficarei no aguardo

Abs!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


Responder

Gostei + 0

02/09/2009

Edson Santos

Rodrigo,

Desde já agradeço sua atenção.

Sim, conheço o WSDLImporter e tem me ajudado bastante em alguns casos, porém em alguns casos não consegue criar a unit ou a Unit é incompleta. Essa é uma outra dúvida, por que em alguns consegue outros não. Problema na versão? Utilizo o Delphi 6 Update Pack 2.

Só que fiz "caca" e meu Delphi não tem mais o recurso do WSDL Importer, não sei o que fiz de errado que a aba Webservices já não existe mais como opção no File\New\Other. Se puder me ajudar a recuperar........

O wsdl é https://wsh.orizonbrasil.com.br/wstiss/v20201/TransmiteMensagem?wsdl

E se não for pedir muito(rsrs). Tem muita diferença na Unit gerada no 2010 para a versão 6? Seria possível a adaptação no 6?

Obrigado










Responder

Gostei + 0

02/09/2009

Rodrigo Mourão

Opa sim tem diferença sim !!!

Os WebServices novos ja estou usando soap 1.2 se nao me engano, ou seja, versão mais nova e o importer do Delphi 6 nao contempla, as vezes so com Delphi 2007. O que eu posso fazer e gerar aqui o WSDL no Delphi 2010 e manda pra vc o .pas para ver se te ajuda.

Se der erro vc me diz qual é para ver se tentando juntos resolver. Não garanto o sucesso na operação mas e melhor do que não tentar.  Assim que chegar em casa importo. Não tenho o D2010 aqui onde estou .

Abs!


Responder

Gostei + 0

02/09/2009

Edson Santos

Rodrigo,

Se você puder gerar o .pas e me enviar, desde já agradeço. Quero tentar todas as possibilidades.

Se ainda você puder gerar a Unit nessa versão do Delphi que você tem agora e me enviar, já é um algo que posso ir adiantando aqui.

Você saberia me dizer qual o arquivo do WSDLImporter?

Obrigado
Responder

Gostei + 0

02/09/2009

Rodrigo Mourão

Repare que o acesso é via HTTPS.

Para eu acessar e gerar eu preciso ter o certificado do cliente instalado na minha maquina. Oberve este link. Ele da uma noção geral sobre isso.

http://support.microsoft.com/kb/901183
Responder

Gostei + 0

02/09/2009

Edson Santos

Rodrigo,

Como faço para te enviar o certificado?

Responder

Gostei + 0

02/09/2009

Rodrigo Mourão

Utilize o disco virtual.

Mais informações aqui: https://www.devmedia.com.br/marcadores/abrir_chamado_video/video%20como%20abrir%20chamado%20com%20video.htm

Não esqueca de me passar o link para o Arquivo no Disco.


Abs!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Responder

Gostei + 0

02/09/2009

Edson Santos

Rodrigo,

Segue o link

http://video.devmedia.com.br/discovirtual/223186/certwork.zip


Responder

Gostei + 0

04/09/2009

Rodrigo Mourão

Blz,

Baixei e vou verificar


Abs !!!
Responder

Gostei + 0

05/09/2009

Rodrigo Mourão

Olá Edson desculpe a demora em responder.

Eu preciso da senha que usou para exportar a chave. A demora em te responder foi porque eu estava baixando o Delphi 2010. Como não tenho licença tiver qeu baixar o trial e e um pouco grande.
Assim ja irei gerar o .pas importando o wsdl com soap 1.2 e com o certificado que me enviou. Talvez isso possa ajuda-lo.

Fico no aguardo da senha !!

Abs!!
Responder

Gostei + 0

06/09/2009

Edson Santos

Rodrigo,


A senha é orizon312.


Obrigado pela sua atenção.


Edson
Responder

Gostei + 0

06/09/2009

Rodrigo Mourão

Olá Edson,

Gerei o WSDL com sucesso no Delphi 2010, e realmente e muito simples. Quando eu fui importar o wsdl o utilitario ja identificou que precisava de um certificado e localizou o certificado que vc me enviou e que eu havia isntalado. Muito simples.

Vem aqui esta o wsdl http://video.devmedia.com.br/rodrigocarreiro/Consultoria/TransmiteMensagem.zip
Esper que ajude. Eu acredito que possa dar erro na hora de compilar pois tem navos tipos e etc. Mas nao custa tentar e me post os erros para que juntos possamos tentar adaptar a sua versao do delphi.

Abs!!
Responder

Gostei + 0

07/09/2009

Edson Santos

Rodrigo,

Estou usando a Unit gerada TransmiteMensagem. Como você já antecipou, acusou uns probleminhas na hora de compilar, mas acredito que não interfere no processo. Nesses casos, coloquei como comentário.

Meu aplicativo de teste tem o seguinte código:

procedure TForm1.Button1Click(Sender: TObject);
Var Xml : tissTransmiteMensagem_PortType;
Resposta : String;
begin
   Memo1.Lines.Clear;
   Memo1.Lines.LoadFromFile( FileNameEdit1.Text );
   Xml := GettissTransmiteMensagem_PortType( False,'' );
   Resposta := Xml.tissTransmiteMensagem_Operation( Memo1.Text );
   ShowMessage( Resposta );
end;


Só que está acusando o erro abaixo:

XML document must have a top level element.
Line: 0

Responder

Gostei + 0

09/09/2009

Rodrigo Mourão

Edson est errro é comum quando a estrutura do XML esta errada. Eu precisaria ver o conteudo que vc esta enviando como parametro para saber se esta correto.

Qual o valor que vc esta enviando ?

Fico no aguardo.

abs!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


Responder

Gostei + 0

09/09/2009

Edson Santos

Rodrigo,

Desculpe, estou te passando tudo picado. rsrsrs

Segue o arquivo XML que estou enviando.

http://video.devmedia.com.br/discovirtual/223186/medial.zip

Este arquivo é válido.


Obrigado
Responder

Gostei + 0

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

Aceitar