Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/11/2014, 09:28
wilmer30
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: aplicando web service

Este es el servidor "producto.php"
Código PHP:
Ver original
  1. require_once "lib/nusoap.php";
  2.  
  3.     function getProd($categoria) {
  4.         $link = mssql_connect('192.168.1.86', 'servidor', 'contrasena');
  5.          
  6.         if (!$link)
  7.             die('Unable to connect!');
  8.          
  9.         if (!mssql_select_db('pro_mujer', $link))
  10.             die('Unable to select database!');
  11.          
  12.         $result = mssql_query("SELECT a.codigo,a.codigo2,a.codigo3,p.nombre, p.otro, SUM( mont ) as 'prima' FROM ArchivoPS p join ArchivoSe a on (a.codigo2 = p.codigo2 and a.codigo2 = p.codigo2)  WHERE F_Efect between (SELECT DATEADD(mm, DATEDIFF(mm,0,'2014-06-30'), 0)) and '2014-06-30' and a.Prima > 0 group by p.codigo, p.codigo2 ,a.codigo3");
  13.  
  14.         if ($categoria == "libros") {
  15.             $datos = array();
  16.             $c = 0;
  17.             while ($row = mssql_fetch_array($result)) {
  18.                 for($i = 0; $i < 6; $i++) {
  19.                     $datos[$c][$i] = $row[$i];
  20.                 }
  21.                 $c++;
  22.             }
  23.             return $datos[0][0];
  24.         } else {
  25.             return "No hay productos de esta categoria";
  26.         }
  27.         mssql_free_result($result);
  28.     }
  29.    
  30.     $server = new soap_server();
  31.  
  32.     $server->configureWSDL("producto", "urn:producto");
  33.      
  34.     $server->register("getProd",
  35.         array("categoria" => "xsd:string"),
  36.         array("return" => "xsd:string"),
  37.         "urn:producto",
  38.         "urn:producto#getProd",
  39.         "rpc",
  40.         "encoded",
  41.         "Nos da una lista de productos de cada categoría");
  42.  
  43.     $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA :;
  44.     $server->service($HTTP_RAW_POST_DATA);

El cliente "cliente.php":
Código PHP:
Ver original
  1. require_once "lib/nusoap.php";
  2.     // $cliente = new nusoap_client("http://localhost/webservices/producto.php");
  3.     $cliente = new nusoap_client("libros.wsdl", true);
  4.      
  5.     $error = $cliente->getError();
  6.     if ($error) {
  7.         echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
  8.     }
  9.      
  10.     $result = $cliente->call("getProd", array("categoria" => "libros"));
  11.      
  12.     if ($cliente->fault) {
  13.         echo "<h2>Fault</h2><pre>";
  14.         print_r($result);
  15.         echo "</pre>";
  16.     }
  17.     else {
  18.         $error = $cliente->getError();
  19.         if ($error) {
  20.             echo "<h2>Error</h2><pre>" . $error . "</pre>";
  21.         }
  22.         else {
  23.             echo "<h2>Librossss</h2><pre>";
  24.             echo $result;
  25.             echo "</pre>";
  26.         }
  27.     }

y el WSDL generado por el servidor "libros.wsdl"
Código XML:
Ver original
  1. <definitions targetNamespace="urn:producto">
  2.     <types>
  3.         <xsd:schema targetNamespace="urn:producto">
  4.             <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  5.             <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
  6.         </xsd:schema>
  7.     </types>
  8.     <message name="getProdRequest">
  9.         <part name="categoria" type="xsd:string"/>
  10.     </message>
  11.     <message name="getProdResponse">
  12.         <part name="return" type="xsd:string"/>
  13.     </message>
  14.     <portType name="productoPortType">
  15.         <operation name="getProd">
  16.             <documentation>Nos da una lista de productos de cada categorÃ*a</documentation>
  17.             <input message="tns:getProdRequest"/>
  18.             <output message="tns:getProdResponse"/>
  19.         </operation>
  20.     </portType>
  21.     <binding name="productoBinding" type="tns:productoPortType">
  22.         <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  23.         <operation name="getProd">
  24.             <soap:operation soapAction="urn:producto#getProd" style="rpc"/>
  25.             <input>
  26.                 <soap:body use="encoded" namespace="urn:producto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  27.             </input>
  28.             <output>
  29.                 <soap:body use="encoded" namespace="urn:producto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  30.             </output>
  31.         </operation>
  32.     </binding>
  33.     <service name="producto">
  34.         <port name="productoPort" binding="tns:productoBinding">
  35.             <soap:address location="http://localhost/webservices/producto.php"/>
  36.         </port>
  37.     </service>
  38. </definitions>

Gracias