Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2014, 20:25
Avatar de mazingerz
mazingerz
 
Fecha de Ingreso: febrero-2003
Ubicación: Sarasota FL
Mensajes: 147
Antigüedad: 21 años, 3 meses
Puntos: 0
XML complex to NuSoap with PHP

Hola comunidad
Necesito consumir un WS que fue echo con el generador Adempiere (copy and paste en SOAPUI trabaja bien) pero al realizar el consumo desde PHP norealiza el llamado.

Algun Ejemplo o ayuda llevo 1 semana y no hay documentacion

Aca vamos esta es la llamada desde SOAPUI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:adin="http://3e.pl/ADInterface">
<soapenv:Header/>
<soapenv:Body>
<adin:queryData>
<adin:ModelCRUDRequest>
<adin:ModelCRUD>
<adin:serviceType>matricula</adin:serviceType>
<adin:TableName>RVOFB_MatriculaWB</adin:TableName>
<adin:RecordID>0</adin:RecordID>
<adin:Filter></adin:Filter>
<adin:Action>Read</adin:Action>

<adin:DataRow>

<adin:field type="?" column="Rut" lval="?" disp="?" edit="?" error="?" errorVal="?">
<adin:val>79808091</adin:val>

<adin:lookup>

<adin:lv val="?" key="?"/>
</adin:lookup>
</adin:field>
</adin:DataRow>
</adin:ModelCRUD>
<adin:ADLoginRequest>
<adin:user>AdminWS</adin:user>
<adin:pass>ws1234</adin:pass>
<adin:lang>135</adin:lang>
<adin:ClientID>1000000</adin:ClientID>
<adin:RoleID>1000010</adin:RoleID>
<adin:OrgID>1000000</adin:OrgID>
<adin:WarehouseID>1000000</adin:WarehouseID>
<adin:stage>0</adin:stage>
</adin:ADLoginRequest>
</adin:ModelCRUDRequest>
</adin:queryData>
</soapenv:Body>
</soapenv:Envelope>





PHP code,

1) make XML string


$strXML = ""."\n";
$strXML = $strXML.'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$strXML = $strXML.'xmlns:adin="http://3e.pl/ADInterface">' . "\n";
$strXML = $strXML." <soapenv:Header/>"."\n";
$strXML = $strXML." <soapenv:Body>"."\n";
$strXML = $strXML." <adin:queryData>"."\n";
$strXML = $strXML." <adin:ModelCRUDRequest>"."\n";
$strXML = $strXML." <adin:ModelCRUD>"."\n";
$strXML = $strXML." <adin:serviceType>".$wsserviceType."</adin:serviceType>"."\n";
$strXML = $strXML." <adin:TableName>".$wsTableName."</adin:TableName>"."\n";
$strXML = $strXML." <adin:RecordID>".$wsRecordID."</adin:RecordID>"."\n";
$strXML = $strXML." <adin:Filter></adin:Filter>"."\n";
$strXML = $strXML." <adin:Action>".$wsAction."</adin:Action>"."\n";
$strXML = $strXML." <adin:DataRow>"."\n";
$strXML = $strXML.' <adin:field column="Rut">'."\n";
$strXML = $strXML." <adin:val>".$parametros[0]."</adin:val>"."\n";
$strXML = $strXML." </adin:field>"."\n";
$strXML = $strXML.' <adin:field column="org">'."\n";
$strXML = $strXML." <adin:val>".$parametros[1]."</adin:val>"."\n";
$strXML = $strXML." </adin:field>"."\n";
$strXML = $strXML." </adin:DataRow>"."\n";
$strXML = $strXML." </adin:ModelCRUD>"."\n";
$strXML = $strXML." <adin:ADLoginRequest>"."\n";
$strXML = $strXML." <adin:user>".$wsuser."</adin:user>"."\n";
$strXML = $strXML." <adin:pass>".$wspass."</adin:pass>"."\n";
$strXML = $strXML." <adin:lang>".$wslang."</adin:lang>"."\n";
$strXML = $strXML." <adin:ClientID>".$wsClientID."</adin:ClientID>"."\n";
$strXML = $strXML." <adin:RoleID>".$wsRoleID."</adin:RoleID>"."\n";
$strXML = $strXML." <adin:OrgID>".$wsOrgID."</adin:OrgID>"."\n";
$strXML = $strXML." <adin:WarehouseID>".$wsWarehouseID."</adin:WarehouseID>"."\n";
$strXML = $strXML." <adin:stage>".$wsstage."</adin:stage>"."\n";
$strXML = $strXML." </adin:ADLoginRequest>"."\n";
$strXML = $strXML." </adin:ModelCRUDRequest>"."\n";
$strXML = $strXML." </adin:queryData>"."\n";
$strXML = $strXML." </soapenv:Body>"."\n";
$strXML = $strXML."</soapenv:Envelope>"."\n";


//Enviemos el XML a un log en disco, lo genera bien y lo probe con SOAPUI
log_debug("strXML ".$strXML."\n");



2) use lib NUSOAP


$client = new nusoap_client($url_servicio2,'WSDL');
$err=$client->getError();
if ($err)
{
$log_contenido = $err;
log_debug("nusoap_client : ".$log_contenido."\n");
die();
}

///He probado con Call y la verdad no funka el mismo error

$client->useHTTPPersistentConnection();
$client->use_curl = TRUE;
$result = $client->send($strXML,$url_servicio2);
$err=$client->getError();;
if ($err)
{
$log_contenido = $err;
log_debug("call del WS : ".$log_contenido."\n");
die();
}


Error en el LOG LOG:
call del WS : HTTP Error: no proper separation of headers and document

Alguna Idea de como usar NUSOAP Con DataComplex

Lo he probado muchas veces con XML regulares y 100 maravilla


Gracias a Todos