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.
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 :)