Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Respuesta multipart de Web Service SOAP (https://www.clubdelphi.com/foros/showthread.php?t=93243)

alejozd 27-06-2018 00:12:19

Respuesta multipart de Web Service SOAP
 
Hola, tengo un problema al consumir un servicioweb SOAP, el servicio utiliza WS-Security y credenciales utilizando el modelo Username Token. Hasta esta parte ya logre armar el request de manera correcta.
El mensaje de error es este: El documento XML debe tener un elemento de nivel superior.
El problema esta en la respuesta del Web Service, en el evento (OnBeforeExecute y OnAfterExecute) del objeto HTTPRIO puedo ver la trama que se envía al servicio web y en el after puedo ver la trama que retorna el servicio. Al parecer la respuesta no es un XML, porque viene con un identificador que inicia y al final después del XML vuelve a cerrar.

Código Delphi [-]
--uuid:8b0f2641-d514-475c-91a2-3a5e7c39856e
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: message@cxf.apache.org>

 --Aqui todo el XML bien formado....
--uuid:8b0f2641-d514-475c-91a2-3a5e7c39856e--

Haciendo las pruebas con el programa SOAPUI, la trama enviada retorna bien la respuesta y muestra el XML.

Ahora bien, estoy haciendo la prueba con Delphi Berlin, utilizo el componente HTTPRIO.
Primero cargo el objeto HTTPRIO en el metodo de la interfaz que me crea el WSDL.
Código Delphi [-]
WService.GetinvoiceService(False,Trim(edtUrl.Text),HTTPRIO1);
Luego lleno los datos de cabecera, luego le paso el objeto de cabecera a HTTPRIO
Código Delphi [-]
HTTPRIO1.SOAPHeaders.Send(vheadSeguridad);
Luego lleno los datos que requiere el metodo y por ultimo hago el envio.
Código Delphi [-]
vFolios := (HTTPRIO1 as WServiceCarvajal.invoiceService).CheckAvailableDocuments(vFoliosE);
donde las variables de vfolios y vFoliosE están definidas de la siguiente manera.
Código Delphi [-]
  vFolios : CheckAvailableDocumentsResponse;
  vFoliosE : CheckAvailableDocumentsRequest;

Haciendo un paso a paso, el error esta cuando intenta cargar la respuesta en el procedure
Código Delphi [-]
procedure TXMLDocument.LoadData;

Agradezco cualquier aporte.


La franja horaria es GMT +2. Ahora son las 06:23:39.

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