Hola Merksaly, te paso el código limpio y que actualmente estoy utilizando:
Primero creamos el servicio web con su función, en este caso de inserción en base de datos.
Código PHP:
Ver original<?php
//llamar a la libreria
require_once ('lib/nusoap.php');
//crear server
$server = new soap_server;
// initialize WSDL con nombre de la funcion
$server->configureWSDL( 'addNewPromowsdl' , 'urn:addNewPromowsdl' );
$server->wsdl->schemaTargetNamespace = 'urn:addNewPromowsdl';
$server->wsdl->addComplexType(
'MySoapObject',
'complexType',
'struct',
'all',
'',
'Codigo' => array('name'=>'Codigo','type'=>'xsd:string') //Declaracion de datos que vamos a devolver )
);
$server->wsdl->addComplexType(
'ObjectPromo',
'complexType',
'struct',
'all',
'',
'param1' => array('name'=>'param1','type'=>'xsd:string'), 'param2' => array('name'=>'param2','type'=>'xsd:string'), .
.
.
'paramN' => array('name'=>'paramN','type'=>'xsd:string') )
);
$server->register(
'addNewPromo',
'param1' => 'xsd:string',
'param2' => 'xsd:string',
.
.
.
'paramN' => 'xsd:string'
),
array('return'=>'tns:MySoapObject'), 'addNewPromowsdl',
'urn:addNewPromowsdl',
'rpc',
'encoded',
'Inserta datos');
//Metodo de insercion de datos
function addNewPromo($param1, $param2, ..., $paramN)
{
$myError = false;
$myErrorText = "";
$con = mysql_connect("servidor","Usuario","clave"); //Datos del servidor de base de datos usuario y clave if (!$con) {
$result = array('Codigo'=>"-1"); //Si falla la conexión devuelve -1 return $result;
}
if ($myError==false)
{
//Funcion de inserci贸n de datos en la tabla.
$sql="INSERT INTO tabla (
param1,
param2,
.
.
.
paramN
)
VALUES ('$idPromo',
'$param1',
'$param2',
.
.
.
'$paramN')";
$result = array('Codigo'=>"-2"); //Si falla devuelve -2 return $result;
}
}
$result = array('Codigo'=>"1"); //Si es correcto devuelve 1 return $result;
}
// create HTTP listener
$server->service($HTTP_RAW_POST_DATA);
?>
Lo siguiente que creamos es el php que consumirá dicho servicio, viene con las indicaciones de ocp001a para depurar errores.
Código PHP:
Ver original<?php
require_once ('lib/nusoap.php');
$param = array( 'Param1' => 'valor', 'Param2' => 'valor',
.
.
.
'ParamN' => 'valor'
);
$client = new nusoap_client('ruta/servicio.php');//Ruta donde se encuentra nuestro servicio para consumirlo
$response = $client->call('addNewPromo',$param);
//Codigo para debugear y ver la respuesta y posibles errores, comentar cuando se comprueba que está correcto el servicio y la llamada
$err = $client->getError();
if ($err) {
echo '<p><b>Constructor error: ' . $err . '</b></p>';
}
echo '<h2>Request</h2>';
echo '<h2>Response</h2>';
echo '<p><b>Debug: <br>';
//Comentar hasta aquí
if($client->fault)
{
echo "FAULT: <p>Code: (".$client->faultcode.")</p>";
echo "String: ".$client->faultstring;
}
else
{
//var_dump ($response);
echo "Codigo: ".$response['Codigo'];
}
?>
Este servicio web está realizado en PHP y para ser consumido desde PHP, para consumirlo desde .NET cambia la segunda parte.