Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cadmiel

Criar wsdl php

Recommended Posts

Boa tarde galera,


Como poderia criar uma wsdl que tenha um serviço[matricular] que aceite dois parametros e me retorne um array?, abaixo criei dos cenários do que pode ter dentro desses dois parametro:


--------------------------------------------------------

1° situação [inscrever aluno em 'N' cursos]

--------------------------------------------------------


$lstArray = array();
/* 1 - Dado do aluno */
$lstOBJ = new stdClass();
$lstOBJ->nome = 'felipe';
$lstOBJ->sobrenome = 'silva';
$lstArray ['lstUses'] = $lstOBJ;
/* 1 - Curso */
$lstOBJ = new stdClass();
$lstOBJ->id = 123;
$lstOBJ->role = 'student';
$lstArray ['lstCrs'][] = $lstOBJ;
/* 2 - Curso */
$lstOBJ = new stdClass();
$lstOBJ->id = 125;
$lstOBJ->role = 'student';
$lstArray ['lstCrs'][] = $lstOBJ;


--------------------------------------------------------

2° situação [inscrever 'N' Alunos em 1 curso]

--------------------------------------------------------


$lstArray = array();
/* 1 - Dado do aluno */
$lstOBJ = new stdClass();
$lstOBJ->nome = 'felipe';
$lstOBJ->sobrenome = 'silva';
$lstArray ['lstUses'][] = $lstOBJ;
/* 1 - Dado do aluno */
$lstOBJ = new stdClass();
$lstOBJ->nome = 'felipe';
$lstOBJ->sobrenome = 'silva';
$lstArray ['lstUses'][] = $lstOBJ;
/* 1 - Curso */
$lstOBJ = new stdClass();
$lstOBJ->id = 123;
$lstOBJ->role = 'student';
$lstArray ['lstCrs'] = $lstOBJ;


-------------------------------------------------------

Instanciando serviço

-------------------------------------------------------


$itcSoapCliente = new SoapClient('arquivo.php?wsdl');
$callBack = $itcSoapCliente->matricular($lstArray);


Calback sera um array com status do que acontenceu e tals.


Desde já agradeço : )

Compartilhar este post


Link para o post
Compartilhar em outros sites

O zend framework tem uma biblioteca muito legal que já gera esse wsdl,

 

da uma pesquisada: http://framework.zend.com/manual/1.12/en/zend.soap.server.html


Segue um exemplo usando a biblioteca

 

server.php

	if(isset($_GET['wsdl'])) {
		require_once('Zend/Soap/AutoDiscover.php');
	    $autodiscover = new Zend_Soap_AutoDiscover();
	    $autodiscover->setClass('MeuServico');
	    $autodiscover->handle();
	} else {
	    require_once('Zend/Soap/Server.php');
	    $soap = new Zend_Soap_Server("http://localhost/ws/server.php?wsdl");
	    $soap->setClass('MeuServico');
	    $soap->handle();
	}

meu_servico.php

	class MeuServico {

		/**
		 * @param string $input
		 * @return string
		 */
		public function metodo1($input) {
			return "Recebido via SOAP: $input";
		}
	}

cliente.php

	require_once('Zend/Soap/Client.php');
	$cliente = new Zend_Soap_Client("http://localhost/ws/server.php?wsdl");
	echo $cliente->metodo1("Metodo 1 do WebService");

Estou usando a biblioteca Zend Framework 1.12

Compartilhar este post


Link para o post
Compartilhar em outros sites

@jdsdias usando a class zend_soap deu certo, agora tenho uma outra dúvida,

 

estou testando o serviço novo q criei pelo soapui, segue trecho do codigo

 

           <item>
               <key xsi:type="xsd:string">lstCrs</key>
               <value xsi:type="ns2:Map">
                  <item>
                     <key xsi:type="xsd:string">c1</key>
                     <value xsi:type="xsd:string">matematica</value>
                  </item>
               </value>
            </item>

            <item>
               <key xsi:type="xsd:string">lstUses</key>
               <value xsi:type="ns2:Map">
                  <item>
                    <key xsi:type="xsd:string">u1</key>
                     <value xsi:type="xsd:string">Jorge</value>
                  </item>
                  <item>
                     <key xsi:type="xsd:string">u2</key>           
                     <value xsi:type="xsd:string">Thiago</value>
                  </item>
               </value>
            </item>

Como faço para recuperar no php essas informações ?

 


Atualmente resolve o problema codificando o request :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.