anonymous Log in
Search
Recents:
v3.0
gx-l
Error WS cotizaciones BCU - OFF Topic
22/12/20 13:42

ana.bartaburu

Replies: 7

Buen día, desde hace unos días nos está dando error el WS que pide
cotización dólar interbancario a BCU.
No hemos tenido noticias de que haya habido cambios, alguien tiene idea ?
Desde ya gracias.
Ana M. Bartaburu Olarreaga
BF SISTEMAS
<http://www.bfsistemas.com.uy/> www.bfsistemas.com.uy
Uruguay 261 - Salto - Uruguay
Tels. (598) 47327237 - 47325138
<mailto:ana.bartaburu@bfsistemas.com.uy> ana.bartaburu@bfsistemas.com.uy
ana.bartaburu
--
El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
https://www.avast.com/antivirus
Replies

jncorujo2015

22/12/20 14:10
Ana qué tipo de problema estás teniendo? El mar, 22 de dic. de 2020 a la(s) 11:07, Ana Bartaburu ( ana.bartaburu@bfsistemas.com.uy)

jgarcia237

22/12/20 16:15
Hola, buen día!! yo con GX16 .net, agregue esta línea antes de llamar al ws CSHARP System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; &location=getlocation("wsbcucotizaciones") y quedó funcionando Saludos!!! El mar, 22 dic 2020 a las 11:07, Ana Bartaburu (< ana.bartaburu@bfsistemas.com.uy>)

ana.bartaburu

22/12/20 19:32
Gracias Juan, lo tenemos en GX Evo3 .Net pero lo probamos y les comento. Saludos, Ana

ana.bartaburu

22/12/20 19:42
Nicolas, no lo tenemos muy claro porque unos días nos comenzó a pasar en forma aleatoria, andaba bien en algunos horarios. Suponemos puede ser un cambio en seguridad, no nos llega respuesta, voy a probar con sugerencia de Juan y les cuento

ana.bartaburu

23/12/20 14:12
Cuando agregamos sugerencia de Juan con GXEvo 3 nos da este error CS0117: 'System.Net.SecurityProtocolType' no contiene una definici¢n para 'Tls12' Desde ya gracias por cualquier ayuda. Ana

alonso.gx

23/12/20 16:32
El Ev3 por default usa el Framework 3.5 probablemente no soporta la sentencia que mencionas En Compiler Path: esta C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe Pon esto C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe Nota: solo asegura que la ruta que te menciono existe, o pon la que tengas C:\Windows\Microsoft.NET\Framework\v\csc.exe

alonso.gx

23/12/20 16:45
Y por cierto hay algo al respecto https://www5.genexus.com/xev3/scmain.aspx?P%3B178%3B94%3B1264%3B1%3B1%3BO%3B,39434 SAC #39434: Webservice bajo protocolo TLS 1.2 no funciona Desculpe, não há tradução disponível no Português; a versão em Espanhol está disponível Abstract Se tiene un servicio que esta bajo el nuevo protocolo TLS 1.2. Al consumirlo da un error. El mismo servicio antes estaba publicado bajo SSL y funcionaba. Descrição Detalhada Los servicios que se consumen y fueron migrados al protocolo TLS 1.2, no estan funcionando. Por ejemplo al llamar al servicio dan este tipo de errores: ------------ 16:38:13,007 [55] WARN GeneXus.Http.Client.GxHttpClient - Error Execute System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel. at System.Net.HttpWebRequest.GetResponse() at GeneXus.Http.Client.GxHttpClient.Execute(String method, String name) ------------ ERROR GxHttpClient [] - Error Execute Exception: System.Net.WebException Message: A conexão subjacente estava fechada: Erro inesperado em um envio. Source: System em System.Net.HttpWebRequest.GetResponse() em GeneXus.Http.Client.GxHttpClient.Execute(String method, String name) Nested Exception Exception: System.IO.IOException Message: EOF inesperado ou 0 bytes recebidos do fluxo de transporte. Source: System em System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) em System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) em System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) em System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) em System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) em System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) em System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) em System.Net.TlsStream.CallProcessAuthentication(Object state) em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) em System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) em System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) em System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) em System.Net.ConnectStream.WriteHeaders(Boolean async) Mensaje en ingles: The underlying connection was closed: An unexpected error occurred on a send. ------------ Solución: Con .NET : A.Para llamar al servicio con External Object , hay dos casos : A.1. si se tiene propiedad del environment "Use Soap Native" = true , se resuelve con código embebido, algo como el siguiente : csharp System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls; A.2. si se tiene propiedad del environment "Use Soap Native" = false agregar, antes del llamado al servicio , en el código genexus, la linea: csharp System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls; Es requerimiento Framework 4.0 o superior Con Framework 3.5 o inferior buscar el modulo que implementa TLS 1.2 Otro Workaround es agregar lo siguiente al web.config: en el framework 4.6.1 el default es ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls Mientras que en el 4.5 es ServicePointManager.SecurityProtocol = Ssl3 | Tls. B. Para el caso de usar el tipo de datos Httpclient , se debe configurar lo descripto en A.2 Con Java: Con JDK 1.8 o superiori funciona sin problemas, ya que por defecto se usa TLSv1.2 Con JDK 1.7 no funciona, si bien es soportado el TLSv1.2, el valor por defecto es TLSv1. Para que funcione se puede agregar java try { java javax.net.ssl.SSLContext ctx = javax.net.ssl.SSLContext.getInstance("TLSv1.2"); java ctx.init(null, null, null); java javax.net.ssl.SSLContext.setDefault(ctx); java } catch (Exception e) { java } Este código cambia el default para todas las Webapp del server.


Back to gx-l