Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] SOAP objeto y parametros

Estas en el tema de SOAP objeto y parametros en el foro de PHP en Foros del Web. Hola amigos, vi unos cuantos posts aca que me ayudaron a hacer bien una coneccion SOAP con php, todo va bien! me conecte a la ...
  #1 (permalink)  
Antiguo 18/12/2015, 05:25
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Información SOAP objeto y parametros

Hola amigos, vi unos cuantos posts aca que me ayudaron a hacer bien una coneccion SOAP con php, todo va bien! me conecte a la api por medio de php y me tira un error desde la pi (lo cual esta bien y es correcto) que dice algo asi como: la declaracion del objeto es erronea o esta incompleta. Como se que parametros tirar? donde me daria cuenta que es lo que tengo que llamar? sigo buscando mientras tanto pero si me pudieran ayudar a entender la estructura del "objeto"

este es mi xml:
Código HTML:
 <wsdl:types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ucOrderRequest="http://www.uc.se/schemas/ucOrderRequest/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://www.uc.se/schemas/ucOrderRequest/">

      <!-- main (root) elements that are used by the WSDL of the Web Service -->
      <xsd:element name="businessReport">
        <xsd:complexType>
          <xsd:sequence minOccurs="1">
            <xsd:element name="customer" type="ucOrderRequest:customer" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="repositoryaction" type="ucOrderRequest:repositoryaction" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="businessReportQuery" type="ucOrderRequest:reportQuery" minOccurs="1" maxOccurs="1"/>
          </xsd:sequence>
          <xsd:attribute name="product" type="ucOrderRequest:businessProduct" use="required"/>
          <xsd:attribute name="version" type="xsd:string" use="required"/>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="individualReport">
        <xsd:complexType>
          <xsd:sequence minOccurs="1">
            <xsd:element name="customer" type="ucOrderRequest:customer" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="repositoryaction" type="ucOrderRequest:repositoryaction" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="individualReportQuery" type="ucOrderRequest:reportQuery" minOccurs="1" maxOccurs="1"/>
          </xsd:sequence>
          <xsd:attribute name="product" type="ucOrderRequest:individualProduct" use="required"/>
          <xsd:attribute name="version" type="xsd:string" use="required"/>
        </xsd:complexType>
      </xsd:element> 

algo asi tendria que verse al parecer...

Código HTML:
<individualReportQuery xmlReplay="true" htmlReplay="false">
  <object>4101047373</object>
  <creditSeeked>24000</creditSeeked>
  <template id="ABC">
  <income type="T" value="248" />
    <coObject>4312014431</coObject>
    <coObjectIncome>198</coObjectIncome>
    <templateParams>
    <templateParam id="1" value="J" />
    <templateParam id="2" value="1" />
    <templateParam id="3" value="430" />
  </templateParams>
  </template>
</individualReportQuery> 


y este es mi php:

Código PHP:
<?php 

$client 
= new SoapClient(
    
'https://www.xx.se/UCSoapWeb/services/ucOrders2?WSDL', array(
    
'location' => 'https://www.xx.se/UCSoapWeb/services/ucOrders2?WSDL',
    
'userId' => 'xxxxx',
    
'password' => 'xx',
        )
  
);


$getUserDetails = array(

  
'customer' => '4101047373',
  
'individualReportQuery' => ''

  
);

$param = new SoapParam($getUserDetails"individualReport");
  
$functions $client->__getFunctions();
    
print_r($functions); 

}
try {
    
$res $client->individualReport($param);
    echo 
"<pre>"print_r($res); echo "</pre>";
} catch (
SoapFault $exception) {
    echo 
"<pre>"print_r($exception);  echo "</pre>";
    exit();

}

?>
Gracias a todos de antemano por la ayuda!!

Última edición por Ferdinand1945; 18/12/2015 a las 08:22
  #2 (permalink)  
Antiguo 21/12/2015, 17:04
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: SOAP objeto y parametros

me respondo ami mismo para quien lo necesite en el futuro:

Código PHP:
<html>
  <head>
  <meta charset="utf-8">
    <style>
      .wrapper {
      width: 300px;
        padding: 21px;
      }
    </style>
  </head>
  <body>
    <div class="wrapper">
<?php
$pm 

'<soapenv:Envelope encoding="UTF-8" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ucor="http://xxxxx.com/schemas/xxOrderRequest/">
   <soapenv:Header/>
   <soapenv:Body>
      <identityCheck identifier="701-1813" version="2.2" worksites="?">
         <customer>
            <userId>xxxx</userId>
            <password>xxx</password>
            
         </customer>
      </identityCheck>
   </soapenv:Body>
</soapenv:Envelope>'
//aca iria en realidad el link a un xml externo (preferentemente)

$soap_do curl_init();
curl_setopt($soap_doCURLOPT_URL,'https://xxxxx.com/XXSoapWeb/services/ucOrders2' );
curl_setopt($soap_doCURLOPT_CONNECTTIMEOUT10);
curl_setopt($soap_doCURLOPT_TIMEOUT,        10);
curl_setopt($soap_doCURLOPT_RETURNTRANSFERtrue);
curl_setopt($soap_doCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($soap_doCURLOPT_SSL_VERIFYHOSTfalse);
curl_setopt($soap_doCURLOPT_POST,           true );
curl_setopt($soap_doCURLOPT_POSTFIELDS,    $pm);
curl_setopt($soap_doCURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=utf-8''Content-Length: '.strlen($pm) ));
//curl_setopt($soap_do, CURLOPT_USERPWD, $user . ":" . $password);

$result curl_exec($soap_do);
$err curl_error($soap_do);
//$your_xml_response = $result;
//$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response);
//$xml = simplexml_load_string($clean_xml);
echo '<pre>';print_r($result);exit;

?>
      </div>
    </body>
  </html>
Espero que les sirva tanto como me sirvio ami cuando lo escribi xD

Etiquetas: apis-y-servicios, soap, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.