FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Invocar un api rest con headers
Estimados amigos
Tengo una inquietud y es la conexion a un web service q se debe pasar un request , pero no logro hacerlo o no entiendo muy bien como configurar el componete IdHTTP1 para tal fin , aqui se ha hablado de varias formas de incovar este tema pero no logro hacerlo con estos headers Contando con ustedes quedo a sus ordenes URL https://inprise.integral.ec/api/cons...=1308325354001 Nota : Estoy usando un sistema de ejemplo de nuesto amigo neptali el error self.Fhttp.ResponseCode es -1 X-MANTISAPI-CODE eeXahKo8 -> headers he intentado varias formas ejmplo HeaderStr = 'X-MANTISAPI-CODE: eeXahKo8'; IdHttp1.Request.CustomHeaders.Values[HeaderStr]; sale eror IOHandler value is not valid self.Fhttp.ResponseCode da como resultado -1 El ejemplo que utilizo es el de nuestro amigo neftali
__________________
IVAND Última edición por IVAND fecha: 03-04-2019 a las 05:30:13. |
#2
|
|||
|
|||
creo q el problema es porque no se como enviar estos argumentos
self.Fhttp.Request.CustomHeaders.Add('key=X-MANTISAPI-CODE'+'value='+'eeXahKo8') ;
__________________
IVAND |
#4
|
|||
|
|||
Hola Dec
Gracias por tu respuesta y disculpa pero recien puedo entrar a revisar los correos Mira uso indy 10.2.5 y delphi 2009 , esa propiedad que me indicas no aparece en mi version solo aparecen add y no funciona con esos dos parametros .
__________________
IVAND |
#5
|
||||
|
||||
Hola a todos,
Yo creo que uso Indy 10... pero es cierto que probé en Delphi 2007 (lo que tenía más a mano). Mira a ver si esto otro sirve, puesto que aquí parece funcionar también:
|
#6
|
|||
|
|||
Gracias Dev , por tu amable dedicacion ,
Mira logre consumir el servicio de esta manera como es uan pagina https agrege esto
Recibo ya la informacion , pero de una manera muy rara , como si fuera una pagina web que se embebe en un navegador , los datos que debe emviar son Código PHP:
Nuevamente aprecio mucha tu ayuda , un abrazo
__________________
IVAND Última edición por dec fecha: 06-04-2019 a las 10:42:59. Razón: Poner etiquetas DELPHI |
#7
|
||||
|
||||
Hola a todos,
El resultado que obtienes implica que el servidor no está recibiendo la petición HTTP adecuada, puesto que además, probando en apitester.com, el servidor retorna un JSON, tal como se espera. He querido probar con Delphi y me he encontrado con el mismo problema que tú, exactamente. He revisado la petición HTTP que realiza apitester.com, puesto que funciona como se espera, y, después de probar a cambiar el "User Agent" (sin resultado), he visto que con el "Accept" adecuado, la petición se lleva a cabo perfectamente, es decir, algo como lo siguiente funciona bien:
Última edición por dec fecha: 06-04-2019 a las 11:07:20. |
#8
|
||||
|
||||
Cita:
Ademas, ten en cuenta la simetría con: https://webmasters.stackexchange.com...e-http-headers
__________________
El malabarista. |
#9
|
||||
|
||||
Hola a todos,
Entonces, es posible que el "Accept" por defecto que use el componente "IdHttp" no sea el adecuado, y, cambiándolo por "*/*", funciona como se espera. Si funcionase también con "application/json", en efecto, tal vez sería más adecuado usar este en lugar del otro más genérico. Yo únicamente me fijé en cómo hacía la consulta el servicio que obtenía una respuesta correcta y traté de imitar la llamada HTTP. |
#10
|
|||
|
|||
Efectivamente de los dos metodos funciona bien , muchas gracias a los dos , un fuerte abrazo ahora solo queda parsear el resultado
Gracias
__________________
IVAND |
#11
|
|||
|
|||
Necesito su ayuda con este ejemplo
Estoy tratando de hacer una llamada a este API, para obtener del un JSON y así validar la información. Ajusté la función según lo que entendí del ejempo que debaten acá, pero cuando hace por conectarse emite el siguiente error:
raised exception class EIdOSSLUnderlyingCryptoError with message 'Error connecting with SSL. error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure El código fuente de la función es:
Como ejemplo en los parámetros pueden utilizar aNumber = '1871147520' y aNpiType = 'NPI-1'. Gracias por su ayuda. |
#12
|
|||
|
|||
probablemente te esté pasando que no estás enviando con TLS 1.2 ,que últimamente muchas APIS lo exigen.
Deberás usar los indy mas o menos actualizados, y con el componente TidSSLIOHandlerSocketOpenSSL decirle en sus SSLOptions que la SSLVersion es TLSv1_2 |
#13
|
|||
|
|||
Gracias, por la idea Pablog2k, probaré y comento.
|
#14
|
|||
|
|||
Probé de esta otra forma y mismo error.
Saludos.
Probé de está otra forma, incluyendo lo que me comenta pablog2k y como resultado obtengo el mismo error:
Gracias. |
#15
|
|||
|
|||
pero tienes que forzar a que envíe por tls 1.2
cambia esto SSL.SSLOptions.Method:= sslvTLSv1_2; SSL.SSLOptions.Mode:= sslmUnassigned; (yo suelo poner sslmBoth y me funciona) SSL.SSLOptions.VerifyMode:= []; SSL.SSLOptions.VerifyDepth:= 0; SSL.SSLOptions.SSLVersions := [sslvTLSv1_2]; |
#16
|
|||
|
|||
Comparto una vía de solución.
Saludos,
Compartiré la vía con la que solucioné el problema de la llamada a la API.
Gracias. |
#17
|
|||
|
|||
Para invocar un API REST con headers, primero debes asegurarte de tener la URL del API y los headers necesarios
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Incluir Headers de SOAP en web services Delphi 2010 | Revow | Delphi para la web | 6 | 20-05-2015 00:32:59 |
invocar a una dll | lestad | Varios | 3 | 07-03-2014 19:47:54 |
Como modificar los headers de un DBGrid | yn4v4s | OOP | 3 | 16-07-2012 21:43:07 |
dbgrid con sub-headers | samantha jones | Varios | 1 | 02-03-2005 22:30:25 |
Indicador de orden en los headers de un TListView | walrus | OOP | 1 | 11-10-2004 20:50:30 |
|