Boas.
Pediram-me que fosse feito um webservice de modos a comunicar com uma aplicação externa. Isto é totalmente novo para mim, pelo que me estou a ver um bocado à rasca.
Ora, eu tenho que desenhar o ficheiro 'wsdl' aquando uma inscrição. Sei que para o desenhar, utilizo o server e que para ler utilizo o client.
Neste momento o "ficheiro wsdl", encontra-se da seguinte forma:
</xsd:complexType>
Isto é gerado pelo nusoap.server, sem problemas. O meu problema encontra-se agora em ler esta informação, ou seja ler o conteúdo do campo "value", seja pelo 'Soap' ou pelo 'Nusoap'.
Pelo que tenho visto pela net, supostamente eu teria que ter uma função no servidor.
Código (PHP):
Porque o documento, no final, vai ficar assim:
</xsd:complexType>
</xsd:complexType>
Então, no ficheiro cliente tenho algo do género:
Código (PHP):
Ideias?
Pediram-me que fosse feito um webservice de modos a comunicar com uma aplicação externa. Isto é totalmente novo para mim, pelo que me estou a ver um bocado à rasca.
Ora, eu tenho que desenhar o ficheiro 'wsdl' aquando uma inscrição. Sei que para o desenhar, utilizo o server e que para ler utilizo o client.
Neste momento o "ficheiro wsdl", encontra-se da seguinte forma:
Citar
<xsd:complexType name="person">
<xsd:all>
<xsd:element name="id" type="xsd:int" value="1"/>
<xsd:element name="nome" type="xsd:string" value="João"/>
<xsd:element name="nacionalidade" type="xsd:string" value="portuguesa"/>
</xsd:complexType>
Pelo que tenho visto pela net, supostamente eu teria que ter uma função no servidor.
Código (PHP):
$server->register('hello', // method name
array('person' => 'tns:Person'), // input parameters
array('return' => 'tns:SweepstakesGreeting'), // output parameters
'urn:hellowsdl2', // namespace
'urn:hellowsdl2#hello', // soapaction
'rpc', // style
'encoded', // use
'Greet a person entering the sweepstakes' // documentation
);
// Define the method as a PHP function
function hello($person) {
return array($person['id'], $person['nome'], $person['nacionalidade']);
}
Mas esta função (hello) pelo que percebo apenas me devolve uma única pessoa..e eu queria ler todos os conteúdos que estão no ficheiroarray('person' => 'tns:Person'), // input parameters
array('return' => 'tns:SweepstakesGreeting'), // output parameters
'urn:hellowsdl2', // namespace
'urn:hellowsdl2#hello', // soapaction
'rpc', // style
'encoded', // use
'Greet a person entering the sweepstakes' // documentation
);
// Define the method as a PHP function
function hello($person) {
return array($person['id'], $person['nome'], $person['nacionalidade']);
}
Porque o documento, no final, vai ficar assim:
Citar
<xsd:complexType name="person 1">
<xsd:all>
<xsd:element name="id" type="xsd:int" value="1"/>
<xsd:element name="nome" type="xsd:string" value="João"/>
<xsd:element name="nacionalidade" type="xsd:string" value="portuguesa"/>
</xsd:complexType>
<xsd:complexType name="person 2">
<xsd:all>
<xsd:element name="id" type="xsd:int" value="1"/>
<xsd:element name="nome" type="xsd:string" value="João"/>
<xsd:element name="nacionalidade" type="xsd:string" value="portuguesa"/>
</xsd:complexType>
Código (PHP):
require_once('nusoap/lib/nusoap.php');
$namespace = '[url="http://localhost/exemplo/servidor.php?wsdl%27;"]http://localhost/exemplo/servidor.php?wsdl';[/url]
$client = new nusoap_client($namespace, 'wsdl');
$result = $client->call('hello', array('person' => 'jaqim'));
print_r($result);
Que não funciona. E eu compreendo porquê, tenho é tentado adaptar o que vejo na net ao que preciso.$namespace = '[url="http://localhost/exemplo/servidor.php?wsdl%27;"]http://localhost/exemplo/servidor.php?wsdl';[/url]
$client = new nusoap_client($namespace, 'wsdl');
$result = $client->call('hello', array('person' => 'jaqim'));
print_r($result);
Ideias?