Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   TIdHTTP abrir conexion ssl (https://www.clubdelphi.com/foros/showthread.php?t=91749)

FideRosado 15-04-2017 19:37:09

TIdHTTP abrir conexion ssl
 
Hola tengo un TIdHTTP y al abrir conexion ssl me sucede esto

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHttp;
  params: TStrings;
  respuesta,temp1,temp2,temp3,comi:string;
   v1:Integer;
begin
  http := TIdHTTP.Create(Self);
  params := TStringList.Create;
  comi:='''';
  try
    respuesta := http.Post('https://secure.etecsa.net:8443', params);
    resultadopaso1:=respuesta;
  //    resultadopaso1:=Memo2.Text;
  finally
    http.Free;
    params.Free;
  end;
end;

dice un error que no puede acceder al puerto ssl
alguna idea de lo que puede suceder

Osorio 17-04-2017 19:56:30

Prueba y comentas
 
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHttp;
  params: TStrings;
  respuesta,temp1,temp2,temp3,comi:string;
   v1:Integer;
    IdSSLIOHandlerSocketOpenSSL17: TIdSSLIOHandlerSocketOpenSSL;
begin


            IdSSLIOHandlerSocketOpenSSL17:= TIdSSLIOHandlerSocketOpenSSL.Create;


  http := TIdHTTP.Create(Self);
  http.IOHandler:=IdSSLIOHandlerSocketOpenSSL17;

  params := TStringList.Create;
  comi:='''';
  try
    respuesta := http.Post('https://secure.etecsa.net:8443', params);
    resultadopaso1:=respuesta;
  //    resultadopaso1:=Memo2.Text;
  finally
    http.Free;
    params.Free;
  end;
end;

Neftali [Germán.Estévez] 18-04-2017 17:29:09

Como dice Osorio te falta toda la información del componente que se encarga de la conexión SSL.
Tampoco comentas nada de las librerías SSL ¿Las tienes en el directorio? ¿Qué versión has descargado?

FideRosado 20-04-2017 09:32:34

respuesta
 
las dll estan en el mismo directorio de la app, pero aun asi me dice que no la puede cargar
"Could not load ssl library"
que hago
hice este sencillo ejemplo, usando indy 10.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Http1: TIdHTTP;
  params:TStringList;
begin
  Http1 := TIdHTTP.Create (nil);
  params := TStringList.Create;

  with Http1 do begin
      ProtocolVersion:=pv1_0;
  end;

  try
    Http1.Request.UserAgent := 'User-Agent: NULL';
    //strRead := Http1.Get(edStrUrl.Text);
    strRead := Http1.Post(edStrUrl.Text, params);
    Memo1.Text:=strRead;
  finally
    Http1.Free;
     params.Free;
  end;
end;

Neftali [Germán.Estévez] 21-04-2017 10:46:51

Cita:

Empezado por Neftali (Mensaje 515625)
Como dice Osorio te falta toda la información del componente que se encarga de la conexión SSL.

Lo dicho.
Te adjunto un código extraído de esta entraba de mi web (código del ejemplo actualizado al final de la entrada) que usa Indy para acceder a un server con HTTPS, aunque si buscas referencias a ese componente encontrarás muchos más códigos similares.
Si lo comparas con el tuyo, verás que la estructura es parecida, pero te falta la parte (en rojo) que completa el componente para acceder a HTTPS.

Código Delphi [-]
  // Crear componente para acceder
  IdH := TidHttp.Create(nil);
  IdH.ReadTimeout := 30000;
  IdSSL := TIdSSLIOHandlerSocket.Create(nil);
  IdH.IOHandler := IdSSL;
  IdSSL.SSLOptions.Method := sslvTLSv1;
  IdSSL.SSLOptions.Mode := sslmUnassigned;

  // proteccion para liberar
  try
    // proteccion por error
    try
      // Obtenemos la pagina
      Resp := IdH.Get(Trim(StrURL));
      // recuperamos la respuesta
      TSContent.Text  := Resp;
      mmContent.Lines.Text := Resp;
      // Activar el siguiente paso
      ActiveLabel(lblPaso2);
    except
      on E:Exception do begin
        MessageDlg('Error al acceder a la página. '+#13+#10+'Mensaje: '+E.Message, mtError, [mbOK], 0);
      end;
    end;  // try
  finally
    IdH.Free;
    IdSSL.Free;
  end;

Es posible que tengas que añadir alguna de estas units: IdSSLOpenSSL, IdIOHandler, IdIOHandlerSocket

FideRosado 22-04-2017 07:16:34

respuesta
 
tienes que decirme quien es
TSContent.Text := Resp;

FideRosado 22-04-2017 07:47:58

respuesta
 
1 Archivos Adjunto(s)
ME SALE ESTO, DIGANME A QUE SE DEBE

http://www.clubdelphi.com/foros/atta...1&d=1492836387

Neftali [Germán.Estévez] 22-04-2017 11:30:19

Cita:

Empezado por FideRosado (Mensaje 515787)
tienes que decirme quien es
TSContent.Text := Resp;

Esa parte no te iteresa, mira que yo estoy haciendo un Post y tú estás haciendo un Get.
La parte que te interesa es la que he puesto en rojo, que es la parte de confguración. Luego deja en código que estabas utilzando.

FideRosado 22-04-2017 20:41:32

respuesta
 
lo se de echo eso no lo toke, pero al final m,e sal esta misma informacion dando error


La franja horaria es GMT +2. Ahora son las 00:47:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi