Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   WebService Port@firma v2 Junta de Andalucia. (https://www.clubdelphi.com/foros/showthread.php?t=93672)

rafacarpi 27-12-2018 09:24:30

WebService Port@firma v2 Junta de Andalucia.
 
Buenas a todos,



estoy envuelto en el desarrollo de un cliente Delphi que ataque al WebService de Port@firma de la Junta de Andalucía. El problema es que ni el Import WSDL de Delphi 7 ni el de Tokyo 10.2 me importan correctamente el WSDL, creo que en parte es por como está montado el servidor, pero no es descartable mi torpeza. No es el primer WebService que ataco, ya lo hago con el SII de la Agencia Tributaria y varios internos de la empresa.


¿Alguien ha tenido que trabajar con este WebService desde Delphi?


Gracias a todos por vuestro tiempo.


Feliz navidad y prospero año nuevo a todos.

Casimiro Notevi 27-12-2018 09:36:03

Cita:

Empezado por rafacarpi (Mensaje 530190)
El problema es que ni el Import WSDL de Delphi 7 ni el de Tokyo 10.2 me importan correctamente el WSDL

Vale, pero qué problema tienes, qué código usas, etc.

newtron 27-12-2018 10:09:32

Cita:

Empezado por rafacarpi (Mensaje 530190)
Buenas a todos,



estoy envuelto en el desarrollo de un cliente Delphi que ataque al WebService de Port@firma de la Junta de Andalucía. El problema es que ni el Import WSDL de Delphi 7 ni el de Tokyo 10.2 me importan correctamente el WSDL, creo que en parte es por como está montado el servidor, pero no es descartable mi torpeza. No es el primer WebService que ataco, ya lo hago con el SII de la Agencia Tributaria y varios internos de la empresa.


¿Alguien ha tenido que trabajar con este WebService desde Delphi?


Gracias a todos por vuestro tiempo.


Feliz navidad y prospero año nuevo a todos.


Una curiosidad.... ¿qué posibilidades da ese webservice?


Saludos

Neftali [Germán.Estévez] 03-01-2019 13:12:49

¿Se puede acceder al webservice o se necesitan credencialkes especiales?
¿Puedes poner la URL?
¿Al importar te da algún error?

rafacarpi 08-01-2019 10:58:50

Perdonadme todos y muchisimas gracias por el interés. Por temas de carga de trabajo y vacaciones no he podido explicar detalladamente mi problema. Estoy escribiendolo y en breve lo pongo, sería de muchísima ayuda si alguien se hubiera encontrado con este problema, similiar o supiera por donde debería tirar. Gracias de verdad y espero subir la explicación correctamente redactada y con toda la información.


Muchas gracias.

rafacarpi 08-01-2019 11:26:55

1 Archivos Adjunto(s)
La url del WSDL es http://portafirmas.dipusevilla.es/pf...ryService?wsdl


El resultado de usar el WSDL Importer de Delphi 7 devuelve este resultado:



Código Delphi [-]
<div style="margin:20px; margin-top:5px">
  <div class="smallfont" style="margin-bottom:2px">Código:div>
  
// ************************************************************************ // // The types declared in this file were generated from data read from the // WSDL File described below: // WSDL    : http://portafirmas.dipusevilla.es/pfirma26/servicesv2/QueryService?wsdl // Encoding : UTF-8 // Version  : 1.0 // (08/01/2019 10:59:16 - 1.33.2.5) // ************************************************************************ // unit QueryService1; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type   // ************************************************************************ //   // The following types, referred to in the WSDL document are not being represented   // in this file. They are either aliases[@] of other types represented or were referred   // to but never[!] declared in the document. The types from the latter category   // typically map to predefined/known XML or Borland types; however, they could also   // indicate incorrect WSDL documents that failed to declare or import a schema type.   // ************************************************************************ //   // !:downloadSign    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadSignResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:exceptionInfo  - "urn:juntadeandalucia:cice:pfirma:type:v2.0"   // !:queryUsers      - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryUsersResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryDocumentTypes - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryDocumentTypesResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadDocument - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadDocumentResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryStates    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryStatesResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryRequest    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryRequestResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryJobs      - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryJobsResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryComments  - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryCommentsResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryHistoric  - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryHistoricResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // ************************************************************************ //   // Namespace : urn:juntadeandalucia:cice:pfirma:query:v2.0   // transport : http://schemas.xmlsoap.org/soap/http   // style    : document   // binding  : QueryServiceServiceSoapBinding   // service  : QueryServiceService   // port      : QueryServicePort   // URL      : http://portafirmas.dipusevilla.es/pfirma26/servicesv2/QueryService   // ************************************************************************ //   QueryService = interface(IInvokable)   ['{29BE8E24-F459-14CA-9EFA-02D7E5903009}']     function  downloadSign(const downloadSign: downloadSign): downloadSignResponse; stdcall;     function  queryUsers(const queryUsers: queryUsers): queryUsersResponse; stdcall;     function  queryDocumentTypes(const queryDocumentTypes: queryDocumentTypes): queryDocumentTypesResponse; stdcall;     function  downloadDocument(const downloadDocument: downloadDocument): downloadDocumentResponse; stdcall;     function  queryStates(const queryStates: queryStates): queryStatesResponse; stdcall;     function  queryRequest(const queryRequest: queryRequest): queryRequestResponse; stdcall;     function  queryJobs(const queryJobs: queryJobs): queryJobsResponse; stdcall;     function  queryComments(const queryComments: queryComments): queryCommentsResponse; stdcall;     function  queryHistoric(const queryHistoric: queryHistoric): queryHistoricResponse; stdcall;   end; function GetQueryService(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): QueryService; implementation function GetQueryService(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): QueryService; const   defWSDL = 'http://portafirmas.dipusevilla.es/pfirma26/servicesv2/QueryService?wsdl';   defURL  = 'http://portafirmas.dipusevilla.es/pfirma26/servicesv2/QueryService';   defSvc  = 'QueryServiceService';   defPrt  = 'QueryServicePort'; var   RIO: THTTPRIO; begin   Result := nil;   if (Addr = '') then   begin     if UseWSDL then       Addr := defWSDL     else       Addr := defURL;   end;   if HTTPRIO = nil then     RIO := THTTPRIO.Create(nil)   else     RIO := HTTPRIO;   try     Result := (RIO as QueryService);     if UseWSDL then     begin       RIO.WSDLLocation := Addr;       RIO.Service := defSvc;       RIO.Port := defPrt;     end else       RIO.URL := Addr;   finally     if (Result = nil) and (HTTPRIO = nil) then       RIO.Free;   end; end; initialization   InvRegistry.RegisterInterface(TypeInfo(QueryService), 'urn:juntadeandalucia:cice:pfirma:query:v2.0', 'UTF-8');   InvRegistry.RegisterDefaultSOAPAction(TypeInfo(QueryService), '');   InvRegistry.RegisterInvokeOptions(TypeInfo(QueryService), ioDocument);   InvRegistry.RegisterInvokeOptions(TypeInfo(QueryService), ioLiteral); end.
div>

En el primer bloque no es capaz de definir los tipos:

Código Delphi [-]
<div style="margin:20px; margin-top:5px">
  <div class="smallfont" style="margin-bottom:2px">Código:div>
  
// ************************************************************************ //   // The following types, referred to in the WSDL document are not being represented   // in this file. They are either aliases[@] of other types represented or were referred   // to but never[!] declared in the document. The types from the latter category   // typically map to predefined/known XML or Borland types; however, they could also   // indicate incorrect WSDL documents that failed to declare or import a schema type.   // ************************************************************************ //   // !:downloadSign    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadSignResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:exceptionInfo  - "urn:juntadeandalucia:cice:pfirma:type:v2.0"   // !:queryUsers      - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryUsersResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryDocumentTypes - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryDocumentTypesResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadDocument - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:downloadDocumentResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryStates    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryStatesResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryRequest    - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryRequestResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryJobs      - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryJobsResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryComments  - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryCommentsResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryHistoric  - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"   // !:queryHistoricResponse - "urn:juntadeandalucia:cice:pfirma:query:request:v2.0"
div>

Pero si miramos el WSDL directamente en un navegador vemos que si aparece la url de un xsd donde se definen los tipos.

Código:

<xsd:import namespace="urn:juntadeandalucia:cice:pfirma:query:request:v2.0" schemaLocation="http://portafirmas.dipusevilla.es/pfirma26/servicesv2/QueryService?xsd=query.xsd" />
Y en ese XSD si están definidos los tipos.

El problema es que no es el primer WebService que consumo, pero si es el primero que tengo problemas. He incorporados los XSD a mano, guardandolos y usando el XML Data Binding para generar las interfaces. Pero el Web Service me responde con errores poco descriptivos. Lo último ha sido probar construyendo el XML de llamada a "mano" y aun así me responde con mensajes de error. Pongo un ejemplo más descriptivo:

Uno de los metodos a llamar es queryDocumentTypes usando la aplicación SopaUI conseguí montar un proyecto y hacer la llamada a esa funcion y vi el XML que usaba en la llamada y lo monté yo en delphi. El XML tiene esta pinta:

Código:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:juntadeandalucia:cice:pfirma:query:request:v2.0">
  <soapenv:Header/>
  <soapenv:Body>
      <urn:queryDocumentTypes>
        <query></query>
      </urn:queryDocumentTypes>
  </soapenv:Body>
</soapenv:Envelope>

Bueno pues colocándolo igual a mi desde Delphi me retorna el que se puede ver: http://www.clubdelphi.com/foros/atta...1&d=1546943005

Llevo casi una semana dándole vueltas y no se como abordarlo, es algo que he heredado y no hay ni documentación ni nadie a quien dirigirme, he escrito tanto al ministerio como a la consejeria pero no contestan.

Gracias a todos por el interés.

egostar 08-01-2019 16:11:31

Cita:

Empezado por rafacarpi (Mensaje 530297)
Llevo casi una semana dándole vueltas y no se como abordarlo, es algo que he heredado y no hay ni documentación ni nadie a quien dirigirme, he escrito tanto al ministerio como a la consejeria pero no contestan.

Gracias a todos por el interés.

Hola,

Cuando todo lo que intentento hacer ( SOAP con Delphi ) y no puedo resolverlo por una u otra causa, acudo a un plan B ( cURL ) sí, un poco más de trabajo porque se tiene que crear el SOAP a "manita" pero te podría "salvar el pellejo".

Mira éste tutorial a ver si te da una idea.

Saludos

rafacarpi 09-01-2019 08:32:03

Muchísimas gracias egostar le voy a echar un vistazo a ver que tal.

Cita:

Empezado por egostar (Mensaje 530300)
Hola,

Cuando todo lo que intentento hacer ( SOAP con Delphi ) y no puedo resolverlo por una u otra causa, acudo a un plan B ( cURL ) sí, un poco más de trabajo porque se tiene que crear el SOAP a "manita" pero te podría "salvar el pellejo".

Mira éste tutorial a ver si te da una idea.

Saludos


Neftali [Germán.Estévez] 09-01-2019 15:16:14

Si la web estuviera accesible podríamos hacer alguna prueba, inclkuso con versiones posteriores del "WSDL importer", pero me está dando como caída.

Casimiro Notevi 09-01-2019 22:29:46

Y a ver ahora si con el cambio de gobierno lo cambian todo, no sería de extrañar.

rafacarpi 10-01-2019 13:52:09

1 Archivos Adjunto(s)
No es que esté caida, es que pertenece a un dominio privado en el que hay que loguearse y eso no lo puedo pasar, pero si os puedo pasar el WSDL en fichero, os lo adjunto. Gracias a todos por el interés.:)

rafacarpi 15-01-2019 12:00:47

Muchisimas gracias egostar he conseguido resolverlo con el tutorial y descargando la libreria de Open SSL 1.1.1a.


Un tutorial muy interesante y con multiples aplicaciones con cURL.


Gracias.



Cita:

Empezado por egostar (Mensaje 530300)
Hola,

Cuando todo lo que intentento hacer ( SOAP con Delphi ) y no puedo resolverlo por una u otra causa, acudo a un plan B ( cURL ) sí, un poco más de trabajo porque se tiene que crear el SOAP a "manita" pero te podría "salvar el pellejo".

Mira éste tutorial a ver si te da una idea.

Saludos


egostar 15-01-2019 19:19:44

Cita:

Empezado por rafacarpi (Mensaje 530358)
Muchisimas gracias egostar he conseguido resolverlo con el tutorial y descargando la libreria de Open SSL 1.1.1a.


Un tutorial muy interesante y con multiples aplicaciones con cURL.


Gracias.

Me alegra mucho, ya valió la pena haber hecho ese tutorial. ^\||/

Saludos


La franja horaria es GMT +2. Ahora son las 00:17:09.

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