TIdHttp e SSL

Delphi

29/06/2012

Pessoal, estou tentando utilizar o TIdHttp com SSL mais não estou conseguindo, já estou utilizando o IdSSLIOHandlerSocket1
na propriedade IOHandler do IdHttp quando envio o Post recebo a mensagem: Could not load SSL Library
as dll`s libeay32 e ssleay32 estão na pasta do projeto, como carrego essas danadas? procurando na internet diz que não precisa, que é carregada automaticamente mais não vai, já tentei por na System32, SysWow etc...

alguem sabe como usar o TIdHttp com SSL httpS:\\...

Obrigado desde já!
Murilo Junqueira

Murilo Junqueira

Curtidas 0

Melhor post

Murilo Junqueira

Murilo Junqueira

04/07/2012

Resolvido de VEZ, na maquina que funcionava tinha 2 dlls no SysWOW64 (que não sei de onde vieram) já estavam instaladas na maquina (windows novo...) nenhuma das dlls que baixei no site oficial funcionou!
coloquei essas dlls nas outras maquinas e começou a funcionar, muito bagunçado o esquema da OpenSSL e o indy e controlar essas versões, já vi várias pessoas reclamando do problema e quando trocam dlls funciona!

mais de qualquer forma vlw, se alguem tiver o mesmo problema e já testou todas dlls me diga que eu envio as que estou utilizando!

att.
GOSTEI 1

Mais Respostas

Hacson Alexandre

Hacson Alexandre

29/06/2012

Tente registrar as dlls. Algo do tipo:

regsvr32 %windir%\System32\suadll.dll /s


ou

regsvr32 %windir%\SysWOW64\suadll.dll /s
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

29/06/2012

Tente registrar as dlls. Algo do tipo:

regsvr32 %windir%\System32\suadll.dll /s


ou

regsvr32 %windir%\SysWOW64\suadll.dll /s


Não deu certo, ocorre o mesmo problema, pelo que vi essas dlls não precisa ser registradas, bastariam estar no diretório da aplicação...

alguém com alguma luz no fim do túnel?

Obrigado!
GOSTEI 0
Hacson Alexandre

Hacson Alexandre

29/06/2012

Você poderia postar o seu código aqui ?
Você está tentando apenas enviar e-mail ou outra função em específico ?
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

29/06/2012

Olá, o que eu quero fazer é consumir o webservice do MOIP (meio de pagamento) via delphi, não é utilizar e-mail, consigo fazer isso em C# (asp.net)
o código em C# funcionando:

string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(Token + : + Key));
client.Headers.Add(Authorization: Basic + auth);
client.Headers.Add(User-Agent: Mozilla/4.0);
byte[] ResponseArray = client.UploadData(URI, POST, Encoding.UTF8.GetBytes(XMLInstrucao));
string Response = Encoding.UTF8.GetString(ResponseArray);
xml.LoadXml(Response);
string xStatus = xml.DocumentElement.SelectSingleNode(//Resposta//Status).InnerText;
string xToken = xml.DocumentElement.SelectSingleNode(//Resposta//Token).InnerText;

=============================================== - codigo delphi
XMLResponse := TStringStream.Create();
XMLRequest := TStringStream.Create();
sl := TStringList.Create;
fsParam := TMemoryStream.Create;
DataStream := <xml></xml>
sl.Add(DataStream);
sl.SaveToStream(fsParam);
IdHTTP.IOHandler := IdSSLIOHandlerSocket1;
IdHTTP.Request.CustomHeaders.Clear;
IdHTTP.Request.Clear;
IdHTTP.Request.ContentType := text/xml;
IdHTTP.Request.CustomHeaders.Add(Authorization: Basic + xAut);
IdHTTP.Request.CustomHeaders.Add(User-Agent: Mozilla/4.0);

strProdutos := IdHTTP.Post(https://desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica, fsParam); //<--- O ERRO É NESSA LINHA:

MResp.Lines.Add(strProdutos);


==========================================================================================

Obrigado novamente!

att.
GOSTEI 0
Hacson Alexandre

Hacson Alexandre

29/06/2012

Essa parte não é muito minha praia.
A variável fsparam é de que tipo ?

Tente setar como:
fsparam : TIdMultipartFormDataStream;
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

29/06/2012

é do tipo TMemoryStream

e problema ai é com a diaba da dll do SSL...

o resto acho que está ok...
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

29/06/2012

resolvido, atualizei para o indy 10!
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

29/06/2012

Pessoal, agora complicou, disse que tinha funcionando mais foi parcialmente, pq em uma maquina funciona
em 3 outras não, mesmo aplicativo, mesma dlls etc.. copia a psta com o projeto para outra maquina
executo o exe e could not load ssl library

procurei por essas dlls em uma maquina tem instalada por outros programas em outras não...

teria como carregar essas dlls de um local especifico?

att.
GOSTEI 0
Carlos Borges

Carlos Borges

29/06/2012

Murilo, mas a pergunta que fica é? Mas funcionou o seu pgto com Delphi? Também utilizo MOIP em Delphi Prim (WEB), se funcionou tem como postar em demo ou código? Desde já obrigado
GOSTEI 0
Central A

Central A

29/06/2012

Tive esse problema também, o que ocorreu foi que achei em um fórum que eu deveria usar as duas dlls do openssl como 32bits e não 64bits. De fato, pois o executável que estou gerando é 32bits e não 64bits.
Depois que baixei as dlls para a plataforma correta e colocar junto com o executável funcionou certo.
GOSTEI 0
Fernando Tremonti

Fernando Tremonti

29/06/2012

Olá, consegue me enviar as dlls?
obrigado
GOSTEI 0
Marcos Segundo

Marcos Segundo

29/06/2012

Acredito que já resolveu seu problema mas li por aqui que vc coloca as dll´s na pasta do seu executável.
Ainda não testei.
Meu problema é associar o componente idhttp com o componente IdServerIOHandlerSSLOpenSSL1.
Falam para usar o IOHandler do IDHttp mas o IdServerIOHandlerSSLOpenSSL1 não aparece nas escolhas que estão em vermelho.
resumindo não tenho como associar o IdServerIOHandlerSSLOpenSSL1 ao IDHTTP para abrir conexões SSL.
Alguem tem uma DICA?
Sou novo no Delphi XE7.
Se alguém tiver um fonte ensinando como fazer o seguinte, seria bem vindo.
preciso baixar um arquivo em um link.
preciso saber o tamanho dele (onde aparece o erro ''HTTP:/1.1 302 ou IOHandler value is not valid'').
Alguém ja teve esse Problema?
GOSTEI 0
POSTAR