anonymous Log in
Search
Recents:
v3.0
csharp-l
Consumo via httpclient - Error http 308
20/08/20 14:34

bruno.camar

Replies: 8

Buenos días foristas,
Necesito consumir un servicio web externo (no genexus), que tiene esta
forma:
*http://server/webapp/servicio1/parametro1/
<http://server/webapp/servicio1/parametro1/>*
Cuando lo ejecuto en un browser me devuelve perfecto el retorno.
pero, al intentar hacerlo con un get vía httpclient no estoy pudiendo.
Revisé el foro y no encontré nada parecido.
Intento así:
&httpclient.AddHeader('Content-Type','text/html')
&httpclient.Execute('GET',&urlFinal)
&Salida=&httpclient.ErrCode.ToString()+"#"+&httpclient.ErrDescription.Trim()
&salidaHTTP=&httpclient.ToString()
Los valores que obtengo son:
&Salida= "1.00#Error en el servidor remoto: (308) PERMANENT REDIRECT."
&salidaHTTP="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="
http://server/webapp/servicio1/parametro1/">
http://server/webapp/servicio1/parametro1/</a>. If not click the link.
¿Alguien tiene idea de cómo podría consumirlo desde gx?
Muchas gracias x los comentarios y aportes que puedan acercar
saludos
Bruno
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,11
Por consultas owner-csharp-l@gxtech.com.uy
Replies

leandro79337933

20/08/20 15:47
Hola Bruno, un browser se comporta diferente al HTTPClient de GX, en principio, un browser te "redirige" mientras que el HTTPClient no. Es probable que tengas algun tema con el metodo tambien, revisa la primer respuesta de este post en SO: https://stackoverflow.com/questions/42136829/whats-the-difference-between-http-301-and-308-status-codes Revisaste en la consola del navegador en la parte de "Network" que es lo que hace? Slds On Thu, Aug 20, 2020 at 11:35 AM Bruno Camargo

luismiyashita

20/08/20 15:47
És un servicio o una página HTML? Para consumir Rest Service el contet-type és diferente &httpClient.AddHeader(!"Content-Type", !"application/json") Luis Miyashita.

bruno.camar

20/08/20 17:37
Muchas gracias por las respuestas! Luis: en realidad parece que responde como una web Leandro: en realidad lo consumo desde postman y también anda perfecto. Seguramente exista alguna forma de "navegar una web" creo que se llama "scraping" que no me estoy dando cuenta cómo hacerlo. Esto es lo que obtengo en network: [image: image.png] Gracias y voy a seguir investigando si se les ocurre algo bienvenido Bruno El jue., 20 ago. 2020 a las 14:22, Luis Miyashita (< luismiyashita@hotmail.com>)

leandro79337933

20/08/20 17:49
Ah, no es una *API* hecha y derecha entonces. Lo que vos queres hacer es "web scraping". Si es asi, no creo que GeneXus sea la herramienta "ideal", aunque es un desafío mas que interesante..... Slds On Thu, Aug 20, 2020 at 2:38 PM Bruno Camargo

jvandeke

20/08/20 20:52
Hola Bruno, cómo estás? Yo revisaría lo siguiente: 1. Apuntaste a otro servidor sin problemas? Ponele otra página cualquiera en la url que invocas y ves el resultado. 2. Cómo decía Leandro el httpclient no está siguiendo la resurrección permanente 308. Pero de todas formas te está contestando con un html que lo indica. 3. Creo que el problema está en el servidor destino. Deberías apuntar a una url que no te redirija a otra. 4. He tenido este tipo de problemas cuando apunto a páginas con https y no configuro la propiedad secure del httpclient. 5. Hay servidores que no les gusta lo que le llega en el User-Agent cuando los invocas así. Podrías cargarle un valor para engañarlo. 6. Desde soap-ui probaste? 7. Córrete un analisis SSL LABS sobre la url destino y chequea si tiene acepta ok de tu versión de java, si tiene ciphers que te están bloqueando o algo por el estilo. Saludos! > El 20 ago. 2020, a la(s) 14:50, Leandro Minatel

bruno.camar

20/08/20 22:56
Muchas gracias por tus aportes Juan! Si probé a otra url y me anduvo, así que es correcta la forma y parece ser un tema del servidor. En este caso no es secure. No probé desde soap ui pero si desde postman que es similar. En principio voy a ponerme en contacto con el proveedor y luego voy a probar lo del User Agent que decis y SSL Labs, buen dato. saludos, Bruno El jue., 20 ago. 2020 a las 18:42, Ing. Juan van de Kerchove (< jvandeke@cycasociados.com.uy>)

bruno.camar

21/08/20 17:25
Ahora si anduvo. Gracias Juan nuevamente. Por medio del User-Agent logré engañar al server y camino perfecto. saludos, Bruno El jue., 20 ago. 2020 a las 19:56, Bruno Camargo ()

jvandeke

21/08/20 17:41
Arriba!!! Que buena noticia! > El 21 ago. 2020, a la(s) 14:26, Bruno Camargo


Back to csharp-l