hola a todos, me acabo de registrar en este sitio y para ir colaborando con ustedes les dejo la forma de consumir un servicio de .net desde php5, espero les ayude.
no olvidar las gracias
primero debemos instanciar la clase soapclient
$cliente= new SoapClient('servicio.asmx?wsdl');
luego ingresemos directamente al servicio en este caso servicio.asmx
luego pinchas el metodo que quieres consumir.
te arrojara un xml algo asi
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<nombremetodo xmlns="http://tempuri.org/...">
<otronombre>
<Var1>string</Var1>
<Var2>long</Var2>
</otronombre>
</nombremetodo >
</soap:Body>
</soap:Envelope>
si se fijan las variables al pasar al servicio son "Var1" y "Var2", las cuales tienen un nodo padre llamado "otronombre" y este a su vez "nombremetodo"
vamos declarar una variable como arreglo en la que iran las variables que pide el servicio
$param=array();
$param['Var1']='datos variable 1';
$param['Var2']='datos variable 2';
si se fijan asigno valores y el nombre de cada valor es el mismo nombre de variable que recibe el servicio
en php se mandan las varibles como arreglo y si en .net estas variables tienen nodos padres, en php se los tienes que mandar como objetos sigamos.
como las variables tienen un nodo padre, quiere decir que este arreglo debe estar en un objeto, esto queda asi
$param=(object) $param;
como vieron el xml en este caso las variables tenia un nodo padre y este otro nodo padre
primero declararemos el nodo padre que sera un array en php
$padre=array();
$padre[otronombre']=$param;
declaramos el nodo padre y le asignamos nodos hijos de este padre
y como 'otronombre' tambien tiene un nodo padre este debe ir en un objeto
$padre=(object) $padre;
despues de tener las variables listas llamamos al metodo
$resultado=$cliente->nombremetodo($padre);
var_dump($resultado);
en resumidas cuentas debe quedar asi;
$cliente= new SoapClient('servicio.asmx?wsdl');
$param=array();
$param['Var1']='datos variable 1';
$param['Var2']='datos variable 2';
$param=(object) $param;
$padre=array();
$padre[otronombre']=$param;
$padre=(object) $padre;
$resultado=$cliente->nombremetodo($padre);
var_dump($resultado);
listo ojala les sea de utilidad.