Consumir webservice com certificado????
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
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
Curtidas 0
Respostas
Rodrigo Mourão
01/09/2009
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
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
GOSTEI 0
Edson Santos
01/09/2009
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
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
GOSTEI 0
Rodrigo Mourão
01/09/2009
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!
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!
GOSTEI 0
Edson Santos
01/09/2009
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
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
GOSTEI 0
Rodrigo Mourão
01/09/2009
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
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
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Como faço para te enviar o certificado?
Como faço para te enviar o certificado?
GOSTEI 0
Rodrigo Mourão
01/09/2009
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
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
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Segue o link
http://video.devmedia.com.br/discovirtual/223186/certwork.zip
Segue o link
http://video.devmedia.com.br/discovirtual/223186/certwork.zip
GOSTEI 0
Rodrigo Mourão
01/09/2009
Blz,
Baixei e vou verificar
Abs !!!
Baixei e vou verificar
Abs !!!
GOSTEI 0
Rodrigo Mourão
01/09/2009
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!!
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!!
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
A senha é orizon312.
Obrigado pela sua atenção.
Edson
A senha é orizon312.
Obrigado pela sua atenção.
Edson
GOSTEI 0
Rodrigo Mourão
01/09/2009
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!!
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!!
GOSTEI 0
Edson Santos
01/09/2009
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
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
GOSTEI 0
Rodrigo Mourão
01/09/2009
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
Qual o valor que vc esta enviando ?
Fico no aguardo.
abs!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Edson Santos
01/09/2009
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
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
GOSTEI 0
Rodrigo Mourão
01/09/2009
Se eu precisar testar, tipo enviar pelo webservice eu posso ???
Preciso da sua autorização pois não sei as consequencias que isto pode causar cado o arquivo seja enviado.
No aguardo !!
Abs!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Preciso da sua autorização pois não sei as consequencias que isto pode causar cado o arquivo seja enviado.
No aguardo !!
Abs!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Sem problema.
Caso tenha êxito, não haverá problema, pois lá é um ambiente de testes.
O que ocorrerá se tudo der certo, é vc receber uma string contendo um XML.
Se vc puder salvar esse xml de retorno e me enviar, agradeço.
Obrigado
Edson
Sem problema.
Caso tenha êxito, não haverá problema, pois lá é um ambiente de testes.
O que ocorrerá se tudo der certo, é vc receber uma string contendo um XML.
Se vc puder salvar esse xml de retorno e me enviar, agradeço.
Obrigado
Edson
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Alguma novidade?
Alguma novidade?
GOSTEI 0
Rodrigo Mourão
01/09/2009
Esdon eu estou recebendo o memso erro. Estou fazendo os testes com o XML que me enviou.
A principio ele esta correto, validei no W3c mas o erro persiste qo enviar.
Estou procedendo com algumas alterações para tentar resolver. Voce tem alguma documentação, algo que fale sobre mensagem de erro, campos obrigatorios ou tem o DTD deste XML? Isso ajudaria.
Fico no Aguardo !!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
A principio ele esta correto, validei no W3c mas o erro persiste qo enviar.
Estou procedendo com algumas alterações para tentar resolver. Voce tem alguma documentação, algo que fale sobre mensagem de erro, campos obrigatorios ou tem o DTD deste XML? Isso ajudaria.
Fico no Aguardo !!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Vou te colocar a par do que é tudo isso. Esse é um arquivo contendo contas médicas do prestador para a operadora(Orizon). Na verdade a Orizon é uma empresa de conectividade e só repassa esse arquivo para seus clientes os convênios de saúde.
Essa troca de arquivos é um padrão definido pela ANS, se chama TISS(Troca de Informações em Saúde Suplementar). E no padrão está definido o consumo de ws, porém são poucas as operadoras que estão disponibilizando esse serviço. A Orizon me chamou para testar esse serviço, pois temos alguns clientes que já trabalham com os clientes da Orizon, exemplo: Maritima, Porto Seguro, Unimeds, etc.....
Conseguí explicar? rsrsrs
Esse mesmo arquivo já tinha enviado como teste para a Orizon e eles mesmo validaram. Está correto a estrutura. O problema é que não estou tendo êxito no consumo desse serviço, eles por outro lado dizem que está tudo ok com a parte deles, só faltando a minha parte.
Os schemas estão no site da ANS, você poderá acessar por este link: http://www.ans.gov.br/padroes/tiss/schemas/
Uma coisa que notei foi uma pequena diferença do wsdl da ANS com o da Orizon, mas não sei se isso poderia representar algum problema.
Obrigado pela tua atenção e fico na torcida por uma solução.
Edson
Vou te colocar a par do que é tudo isso. Esse é um arquivo contendo contas médicas do prestador para a operadora(Orizon). Na verdade a Orizon é uma empresa de conectividade e só repassa esse arquivo para seus clientes os convênios de saúde.
Essa troca de arquivos é um padrão definido pela ANS, se chama TISS(Troca de Informações em Saúde Suplementar). E no padrão está definido o consumo de ws, porém são poucas as operadoras que estão disponibilizando esse serviço. A Orizon me chamou para testar esse serviço, pois temos alguns clientes que já trabalham com os clientes da Orizon, exemplo: Maritima, Porto Seguro, Unimeds, etc.....
Conseguí explicar? rsrsrs
Esse mesmo arquivo já tinha enviado como teste para a Orizon e eles mesmo validaram. Está correto a estrutura. O problema é que não estou tendo êxito no consumo desse serviço, eles por outro lado dizem que está tudo ok com a parte deles, só faltando a minha parte.
Os schemas estão no site da ANS, você poderá acessar por este link: http://www.ans.gov.br/padroes/tiss/schemas/
Uma coisa que notei foi uma pequena diferença do wsdl da ANS com o da Orizon, mas não sei se isso poderia representar algum problema.
Obrigado pela tua atenção e fico na torcida por uma solução.
Edson
GOSTEI 0
Rodrigo Mourão
01/09/2009
Edson temos um problema.
Deixa ver se eu entendi: Este WebService foi feito pela Orizon, certo. E segundo eles funciona, correto ? Se foi isto mesmo então não adianta os Schemas da ANS, temos que ter os Schemas da Oziron, e a documentação.
PQ a principio esta tudo correto sim mas por algum motivo ele nao esta validando o XML, pode ser uma coisa boba, como por exemplo o enconding. Eu precisaria de alguma documentação ou od DTD mas de quem fez os WebServices, ou seja, da Oziron.
Fico no aguardo.
Abs!!
Deixa ver se eu entendi: Este WebService foi feito pela Orizon, certo. E segundo eles funciona, correto ? Se foi isto mesmo então não adianta os Schemas da ANS, temos que ter os Schemas da Oziron, e a documentação.
PQ a principio esta tudo correto sim mas por algum motivo ele nao esta validando o XML, pode ser uma coisa boba, como por exemplo o enconding. Eu precisaria de alguma documentação ou od DTD mas de quem fez os WebServices, ou seja, da Oziron.
Fico no aguardo.
Abs!!
GOSTEI 0
Rodrigo Mourão
01/09/2009
Olá Edson,
FIz mais alguns testes, minha ultima cartada foi usar um TXMLDocument para poder carregar e enviar o XML. Não adiantou, recebi o mesmo erro.
Alguma novidade quanto a documentação ou schemas DTD desta emrpesa?
No Aguardo !!
Abs !
FIz mais alguns testes, minha ultima cartada foi usar um TXMLDocument para poder carregar e enviar o XML. Não adiantou, recebi o mesmo erro.
Alguma novidade quanto a documentação ou schemas DTD desta emrpesa?
No Aguardo !!
Abs !
GOSTEI 0
Rodrigo Mourão
01/09/2009
Olá Edson, posso ajudar em algo mais ???
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Edson Santos
01/09/2009
Rodrigo,
Obrigado pela ajuda, mas não deu.
Quem sabe na próxima.
Obrigado pela ajuda, mas não deu.
Quem sabe na próxima.
GOSTEI 0