PDA

Ver la Versión Completa : Problema al consumir webservice PHP desde Delphi7


apicito
16-03-2010, 10:37:43
Estoy intentado consumir un webservice montado con php ws2o desde unha aplicación hecha con delphi 7 con la actualización de soap.
El servidor devuelve un recordset con los datos de un pedido y la unidad de conexión la he hecho utilizando el WSDL importer. Cuando ejecuto el cliente delphi me da un error de:
EDOMParseError with message 'Only one top level elemment is alloweb in a XML document.
Line: 2 <b>Warning</b>: DOMDocument::localXML()
Me parece que me está devolviendo una pagina html de error en vez de un xml, pero no sé como puedo ver el mensaje para saber que está pasando.
Si miro el log del servidor, todo parece estar bien ya que envía los datos:
[Tue Mar 16 08:34:19 2010] [debug] wsf_xml_msg_recv.c(761) [wsf_wsdl]return payload string is
<ns1:orderDetails xmlns:ns1="http://www.wso2.org/php">
<shipTo>
<name>Jane Smith</name>
<street>YorkStreet</street>
<city>colombo</city>
<state>Sri Lanka</state>
<zip>32343</zip>
</shipTo>
<billTo>
<name>John Smith</name>
<street>Maple Street</street>
<city>LA</city>
<state>USA</state>
<zip>55432</zip>
</billTo>
<product>
<productId>2344</productId>
<shippingDate>20080101</shippingDate>
<status>true</status>
</product>
</ns1:orderDetails>
[Tue Mar 16 08:34:19 2010] [debug] wsf_xml_msg_recv.c(796) [wsf_wsdl] response headers found
[Tue Mar 16 08:34:19 2010] [debug] wsf_xml_msg_recv.c(318) [WSF/PHP] Response node is not null
[Tue Mar 16 08:34:19 2010] [debug] ..\..\src\core\engine\phase.c(210) Invoke the handler AddressingOutHandler within the phase MessageOut
[Tue Mar 16 08:34:19 2010] [info] Starting addressing out handler
[Tue Mar 16 08:34:19 2010] [debug] ..\..\src\modules\mod_addr\addr_out_handler.c(133) No action present. Stop processing addressing
algo que me despista mucho es que en la unit que crea el WSDLimporter, en la parte de inicializacion aparece esto:
initialization
InvRegistry.RegisterInterface(TypeInfo(ShippingTradePortType), 'http://www.wso2.org/php', 'UTF-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ShippingTradePortType), 'http://www.wso2.org/php/QueryPurchaseOrder');
InvRegistry.RegisterInvokeOptions(TypeInfo(ShippingTradePortType), ioDocument);
RemClassRegistry.RegisterXSClass(address, 'http://www.wso2.org/php', 'address');
RemClassRegistry.RegisterXSClass(productInfo, 'http://www.wso2.org/php', 'productInfo');
y las direcciónes "http://www.wso2.org/php" en realidad no existen.
Alguien puede ayudarme con esto?
Un saludo.