Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, sou iniciante em php e estou precisando de ajuda.
Estou utilizando o soap e estou com alguns problemas.
Quando utilizo somente a função radpostauth funciona corretamente, mas quando desejo utilizar a função countradpostauth, da erro :
Fatal error: Uncaught SoapFault exception: [Client] Function ("countradpostauth") is not a valid method for this service in /var/www/workspace/RadiusTools/php/Radpostauth.php:12 Stack trace: #0 /var/www/workspace/RadiusTools/php/Radpostauth.php(12): SoapClient->__soapCall('countradpostaut...', Array) #1 {main} thrown in /var/www/workspace/RadiusTools/php/Radpostauth.php on line 12
Server.php
<?php
$server = new SoapServer("exemplo.wsdl", array('encoding'=>'ISO-8859-1'));
$server->addfunction("radpostauth");
$server->addfunction("countradpostauth");
$server->handle();
function radpostauth(){
$start = $_POST['start'];
$limit = $_POST['limit'];
$sort = $_POST['sort'] ? $_POST['sort'] : 'username';
$dir = $_POST['dir']? $_POST['dir'] : 'ASC';
$order = 'order by '.$sort . ' ' . $dir;
$group = '';
$campo = ($_POST['campo']);
$valor = ($_POST['valor']);
$sql = "select id, username, pass, reply, authdate from radpostauth ";
if ($valor != ""){
if ($campo != ""){
$sql = $sql ." where ". $campo ." like '%". $valor ."%'";
}
}
if ($group != ""){
$sql = $sql.' '.$group;
}
if ($order != ""){
$sql = $sql.' '.$order;
}
if($start !== null && $start !== '' && $limit !== null && $limit !== '' && $valor == ''){
$sql = $sql." LIMIT " . $start . " , " . $limit;
}
$conexao = mysql_connect("127.0.0.1", "root", "root");
mysql_select_db("radius", $conexao);
$query = mysql_query($sql);
while($arr = mysql_fetch_assoc($query)){
$dados = $arr;
}
return $dados;
}
function countradpostauth(){
$sql = "select count(*) as total from radpostauth";
$conexao = mysql_connect("127.0.0.1", "root", "root");
mysql_select_db("radius", $conexao);
$query = mysql_query($sql);
while($arr = mysql_fetch_assoc($query)){
$dados = $arr;
}
return $dados;
?>
Radpostauth.php
<?php
$client = new SoapClient('exemplo.wsdl', array('location' => "http://127.0.0.1/workspace/RadiusTools/php/Server.php",
'uri' => "http://127.0.0.1/workspace/RadiusTools/"));
$arguments = array();
$resultado = $client->__soapCall("radpostauth",$arguments);
$total = $client->__soapCall("countradpostauth",$arguments);
echo json_encode(array(
"data" => $resultado,
"success" => true,
"total" => $total
));
?>
exemplo.wsdl
<?xml version ='1.0' encoding ='ISO-8859-1' ?>
<definitions name='Exemplo'
targetNamespace='urn:Exemplo'
xmlns:tns='http://example.org/Exemplo'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<message name='radpostauthRequest'>
<part name='codigo' type='xsd:string'/>
</message>
<message name='radpostauthResponse'>
<part name='resultado' type='xsd:string[]'/>
</message>
<portType name='ExemploPortType'>
<operation name='radpostauth'>
<input message='tns:radpostauthRequest'/>
<output message='tns:radpostauthResponse'/>
</operation>
</portType>
<binding name='ExemploBinding' type='tns:ExemploPortType'>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='radpostauth'>
<soap:operation soapAction='exemplo#radpostauth'/>
<input>
<soap:body use='encoded' namespace='exemplo'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='exemplo'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<service name='ExemploService'>
<port name='ExemploPort' binding='ExemploBinding'>
<soap:address location='http://127.0.0.1/workspace/RadiusTools/php/Server.php'/>
</port>
</service>
</definitions>
Mesmo eu alterando o arquivo exemplo.wsdl e adicionando as função countradpostauth não consigo fazer funcionar, devo ter um arquivo wsdl para cada função ?? Pois ainda vou fazer o CRUD então vou ter várias funções.
Qual seria a maneira correta de se utilizar ??
Att,
Izabelle Sakashita
Carregando comentários...