Ola, Criei um WebService utilizando a classe nusoap e não consigo retornar um array de dados, ate agora consegui comente uma linha. Utilizei o php como linguagem. Alguem teria algo para me indicar ? Obrigado.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Ola, Criei um WebService utilizando a classe nusoap e não consigo retornar um array de dados, ate agora consegui comente uma linha. Utilizei o php como linguagem. Alguem teria algo para me indicar ? Obrigado.
Oi Paulo, tudo bom?
Acho que não entendi muito bem.
Você esta utilizando o nusoap para consumir o que exatamente? Está utilizando algum framework ou PHP puro?
Aguardo retorno =)
Abraço!
André, Primeiramente obrigado por reagir com interesse em me ajudar. Bom vamos lá: Baixei o nusoap e instanciei. Criei meu servidor e cliente, quando chamo minha função no cliente ele retorna somente um registro. Não estou utilizando nenhum framework. Veja o exemplo do meu servidor:
Exemplo servidor:
$server->wsdl->addComplexType('complexUsuario',
'complexType',
'struct',
'all',
'',
array(
'codigo'=>array('codigo'=>'codigo','type'=>'xsd:INTEGER'),
'usuario'=>array('usuario'=>'usuario','type'=>'xsd:STRING'),
'senha'=>array('senha'=>'senha','type'=>'xsd:INTEGER'))
);
$server->register('getUsuario',
array('codigo' => 'xsd:INTEGER',
'usuario' => 'xsd:STRING',
'senha' => 'xsd:INTEGER'),
array('return' => 'tns:complexUsuario'),
'urn:server.getUsuario',
'urn:server.getUsuario#getUsuario',
'rpc',
'encoded',
'Listagem de usuario;'
);
function getUsuario() {
$con = conexao();
$usuarios = array();
$query = "select codigo, usuario, senha, ativo from usuario";
$res = mysqli_query($con, $query);
// while ($usuario = mysqli_fetch_assoc($res)) {
// array_push($usuarios, $usuario);
// }
// return $usuarios;
return mysqli_fetch_array($res);
}
Exemplo cliente:
<?php
require_once('./lib/nusoap.php');
$wsdl = 'http://localhost/projetos/WebService2/service.php?wsdl';
$client = new nusoap_client($wsdl, true);
$err = $client->getError();
if ($err){
echo "Erro no construtor<pre>".$err."</pre>";
}
$result = $client->call("getUsuario");
if ($client->fault){
echo "Falha<pre>".print_r($result)."</pre>";
}else{
$err = $client->getError();
if ($err){
echo "Erro<pre>".$err."</pre>";
} else{
print_r($result);
}
}
?>
Acredito que o codigo que varre os dados está comentado:
while ($usuario = mysqli_fetch_assoc($res)) {
array_push($usuarios, $usuario);
}
return $usuarios;
Você também pode tentar utilizar a função fetch_all para retornar direto todos os dados da sua consulta no banco:
return mysqli_fetch_all($res);
Esses metodos não funcionam. Teria que ver outra forma.
Que problema ocorre com o mysqli_fetch_all ?
Somente não retorna o array, não apresenta nenhum erro. A tela fica em branco.
Olá.
Teste outra forma, por favor. Remova o seu return e descomente as linhas comentadas. Mude seu while para esse:
while ($usuario = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
array_push($usuarios, $usuario);
}
Poste aqui o resultado :)