Este es el servidor "producto.php"
Código PHP:
Ver originalrequire_once "lib/nusoap.php";
function getProd($categoria) {
if (!$link)
die('Unable to connect!');
die('Unable to select database!');
$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");
if ($categoria == "libros") {
$c = 0;
for($i = 0; $i < 6; $i++) {
$datos[$c][$i] = $row[$i];
}
$c++;
}
return $datos[0][0];
} else {
return "No hay productos de esta categoria";
}
}
$server = new soap_server();
$server->configureWSDL("producto", "urn:producto");
$server->register("getProd",
array("categoria" => "xsd:string"), array("return" => "xsd:string"), "urn:producto",
"urn:producto#getProd",
"rpc",
"encoded",
"Nos da una lista de productos de cada categoría");
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)?
$HTTP_RAW_POST_DATA : ”
; $server->service($HTTP_RAW_POST_DATA);
El cliente "cliente.php":
Código PHP:
Ver originalrequire_once "lib/nusoap.php";
// $cliente = new nusoap_client("http://localhost/webservices/producto.php");
$cliente = new nusoap_client("libros.wsdl", true);
$error = $cliente->getError();
if ($error) {
echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
$result = $cliente->call("getProd", array("categoria" => "libros"));
if ($cliente->fault) {
echo "<h2>Fault</h2><pre>";
echo "</pre>";
}
else {
$error = $cliente->getError();
if ($error) {
echo "<h2>Error</h2><pre>" . $error . "</pre>";
}
else {
echo "<h2>Librossss</h2><pre>";
echo $result;
echo "</pre>";
}
}
y el WSDL generado por el servidor "libros.wsdl"
Código XML:
Ver original<definitions targetNamespace="urn:producto">
<types>
<xsd:schema targetNamespace="urn:producto">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
</xsd:schema>
</types>
<message name="getProdRequest">
<part name="categoria" type="xsd:string"/>
</message>
<message name="getProdResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="productoPortType">
<operation name="getProd">
<documentation>Nos da una lista de productos de cada categorÃ*a</documentation>
<input message="tns:getProdRequest"/>
<output message="tns:getProdResponse"/>
</operation>
</portType>
<binding name="productoBinding" type="tns:productoPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getProd">
<soap:operation soapAction="urn:producto#getProd" style="rpc"/>
<input>
<soap:body use="encoded" namespace="urn:producto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:producto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="producto">
<port name="productoPort" binding="tns:productoBinding">
<soap:address location="http://localhost/webservices/producto.php"/>
</port>
</service>
</definitions>
Gracias