FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
PRESVET: Definición del servicio web de comunicación de prescripciones veterinarias
Pues eso, que como no era suficiente pegarme con el famoso VeriFactu ahora me toca pegarme con la actualización del PRESVET que tengo operativo en algunos clientes.
Hasta ahora lo tenía por el método REST pero como ahora estaba ya metido con los SOAP y la importación de los WSDL, me he decidido a intentar cambiar de manera de consumir los servicios. El manual de instrucciones se puede descargar de aquí: https://www.mapa.gob.es/es/ganaderia...m30-485047.pdf. Por desgracia es una versión obsoleta. La versión actualizada no se de donde se puede descargar. Yo la tengo porque me la enviaron por email, pero es demasiado pesada para poder adjuntarla. ¿Es posible subirla al FTP del foro o algo así? Son poco más de dos megas. Con las pruebas que estoy haciendo, me encuentro con dos problemas: 1) No tengo muy claro como indicar el usuario y la contraseña de acceso al servicio (aún estoy pendiente de que me las envien). 2) Por otro lado, mientras consigo esas credenciales, estoy intentando hacer peticiones para al menos obtener un error de acceso o algo así, pero lo único que consigo es un error de TimeOut. La url actualizada del wsdl es: https://servicio.mapa.gob.es/wspresv...scripcion.wsdl Si hago las pruebas con el SOAPUi: Si hago la petición: Código:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header/> <soap:Body> <tem:EstaActivo/> </soap:Body> </soap:Envelope> Código:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> <s:Header> <a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action> </s:Header> <s:Body> <s:Fault> <s:Code> <s:Value>s:Sender</s:Value> <s:Subcode> <s:Value xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</s:Value> </s:Subcode> </s:Code> <s:Reason> <s:Text xml:lang="es-ES">An error occurred when verifying security for the message.</s:Text> </s:Reason> </s:Fault> </s:Body> </s:Envelope> A ver si a alguien se le ocurre algo. Gracias. |
#2
|
|||
|
|||
Creo que he descubierto el motivo del timeout, lo que no se es como solucionarlo en la llamada desde Delphi.
Seguí haciendo pruebas desde SOAPUi y unas veces me funcionaba bien y otras me daba error de timeout. Al final me di cuenta que el timeout dependía de si tenía activado o no el check de Enable ws-a addresing. Hace falta que esté activado. ¿Cómo activo esa opción al hacer la llamada desde Delphi? Gracias. |
#3
|
||||
|
||||
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
|||
|
|||
Cita:
Muchas gracias. |
#5
|
|||
|
|||
He conseguido los logs del SoapUI enviando la peticitón tanto activando la opción como sin activarla.
Activada: Código:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://tempuri.org/IPresVetComunicacionPrescripcion/EstaActivo</wsa:Action></soap:Header> <soap:Body> <tem:EstaActivo/> </soap:Body> </soap:Envelope> Código:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header/> <soap:Body> <tem:EstaActivo/> </soap:Body> </soap:Envelope> |
#6
|
|||
|
|||
Cita:
Gracias a Casimiro ya se puede descargar el fichero de aquí: https://terawiki.clubdelphi.com/Otro...embre_2023.pdf |
#7
|
|||
|
|||
Ejemplo de conexión con .NET y C#
Ejemplo conexión .Net y C#
Y en el cliente .net será necesario establecer la siguiente configuración: Código:
<system.serviceModel> <bindings> <wsHttpBinding> <binding name="BasicEndpoint"> <security mode="TransportWithMessageCredential"> <transport clientCredentialType="None" /> <message clientCredentialType="UserName" establishSecurityContext="false" /> </security> </binding> </wsHttpBinding> </bindings> <client> <endpoint address="https://servicio.mapa.gob.es/wspresvetcomunicacion/wspresvetcomunicacion.svc" binding="wsHttpBinding" bindingConfiguration="BasicEndpoint" contract="PresVetComunicacionPrescripcion.IPresVetComunicacionPrescripcion" name="BasicEndpoint" /> </client> </system.serviceModel> static void Main(string[] args) { using (PresVetComunicacionPrescripcionClient comunicacionPrescripcion = new PresVetComunicacionPrescripcionClient()) { comunicacionPrescripcion.ClientCredentials.UserName.UserName = "usuario"; comunicacionPrescripcion.ClientCredentials.UserName.Password = "clave"; System.Net.ServicePointManager.Expect100Continue = false; string resultado = comunicacionPrescripcion.EstaActivo(); Console.Write(resultado); Console.ReadLine(); } } |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Definición de una función | Angel.Matilla | C++ Builder | 5 | 12-12-2018 22:09:38 |
Como arrancar o parara un servicio en funcion de otro servicio ?? | QuarkBcn | API de Windows | 12 | 15-06-2011 15:46:11 |
Definición de Globalización | rafita | Humor | 6 | 18-01-2008 00:44:32 |
Comunicacion con Servicio | dieleo | Varios | 4 | 30-10-2007 17:11:52 |
Definición matemática | Héctor Randolph | Humor | 1 | 04-01-2005 17:44:02 |
|