Ver Mensaje Individual
  #1  
Antiguo 16-03-2010
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Reputación: 22
apicito Va por buen camino
Problema al consumir webservice PHP desde Delphi7

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:
Código Delphi [-]
EDOMParseError with message 'Only one top level elemment is alloweb in a XML document.
Line: 2 Warning: 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:
Código PHP:
[Tue Mar 16 08:34:19 2010] [debugwsf_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] [debugwsf_xml_msg_recv.c(796) [wsf_wsdlresponse headers found
[Tue Mar 16 08:34:19 2010] [debugwsf_xml_msg_recv.c(318) [WSF/PHPResponse node is not null
[Tue Mar 16 08:34:19 2010] [debug] ..\..\src\core\engine\phase.c(210Invoke 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(133No action presentStop processing addressing 
algo que me despista mucho es que en la unit que crea el WSDLimporter, en la parte de inicializacion aparece esto:
initialization
Código Delphi [-]
  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.
Responder Con Cita