Php SOAP Web服务函数仅获取第一个值

Php SOAP Web服务函数仅获取第一个值,php,json,web-services,soap,Php,Json,Web Services,Soap,我必须创建一个web服务,但我没有这方面的经验,所以我使用SOAP和我在web上找到的一些代码。webservice应该在一个函数上获得三个值,两个是字符串,一个是JSON,其中包含我将解码以插入mySQL的数据 但是我有以下错误,我的函数只获取第一个值,JSON可以作为一个简单的字符串吗? 最后,为什么utf8()会给我错误?我之所以这么做,是因为这是一个西班牙语数据,我们有可能破坏json解码的重音符号。打印值时,所有函数变量都会获得我传递的第一个变量 以下是服务器PHP代码: <?p

我必须创建一个web服务,但我没有这方面的经验,所以我使用SOAP和我在web上找到的一些代码。webservice应该在一个函数上获得三个值,两个是字符串,一个是JSON,其中包含我将解码以插入mySQL的数据

但是我有以下错误,我的函数只获取第一个值,JSON可以作为一个简单的字符串吗? 最后,为什么utf8()会给我错误?我之所以这么做,是因为这是一个西班牙语数据,我们有可能破坏json解码的重音符号。打印值时,所有函数变量都会获得我传递的第一个变量

以下是服务器PHP代码:

<?php
if(!extension_loaded("soap")){
      dl("php_soap.dll");
}

require_once '../modulos/conexion.php';//connects to DB

function net_stat() {
    $msj = "Web Service en linea";
    return($msj);
}

function net_receive($token, $tabla, $json_encode) {
    $val_token = '8mp8';
    $stat = 'TOKEN: ' .$token.'<br>tabla: '.$tabla.'<br>Json: <br>'. $json_encode;
    //$json_datos = utf8($json_encode);<--Commented because throws unknown error
    //$json_query = json_decode($json_datos, true);
    $json_query = json_decode($json_encode, true);
    if ($val_token == $token) {
        switch ($tabla) {
            case 'cab_usuarios':
                cab_usuarios($json_query);
                $receiver_msg = 'Query realizado a $tabla';
                break;
            default:
                $receiver_msg = $tabla . ' no es un nombre de tabla valido';
                break;
        }
    } else {
        $receiver_msg = 'Token de autenticacion no valido';
    }
    cerrar_conexion_sql();
    $receiver_msg = $stat . '<br>' .$receiver_msg;
    return $receiver_msg;
}

function cab_usuarios($json_query) {
    foreach ($json_query as $row) {
        $id_usua = $row["id_usua"];
        $co_usua = $row["co_usua"];
        $no_usua = $row["no_usua"];
        $ds_pass = password_hash($row["ds_pass"], PASSWORD_BCRYPT);
        $st_usua = $row["st_usua"];
        $fe_ingre = $row["fe_ingre"];
        $co_user = $row["co_user"];
        $eTInf = $row["eTInf"];
        $aTSuc = $row["aTSuc"];
        $aTInf = $row["aTInf"];
        $co_vende = $row["co_vende"];
        $query = "INSERT INTO dbfar_cabusuarios (`id_usua`, `co_usua`, `no_usua`, `ds_pass`, `st_usua`, `fe_ingre`, `co_user`, `eTlnf`, `aTSuc`, `aTlnf`, `co_vende`) VALUES ($id_usua, $co_usua, $no_usua, $ds_pass, $st_usua, $fe_ingre, $co_user, $eTInf, $aTSuc, $aTInf, $co_vende)";
        mysql_query($query);
    }
}

ini_set("soap.wsdl_cache_enabled", "0");

$server = new SoapServer('farletza.wsdl');

$server->addFunction("net_stat");
$server->addFunction("net_receive");

$server->handle();

可以看出,所有变量都获得相同的值,为什么会发生这种情况?

如果有人来到这里想知道我的错误,那就是在WSDL中,我对输入消息的各个部分使用了相同的名称,所以我在这里使用了

<message name='net_receiveRequest'> 
  <part name='symbol' type='xsd:string'/>
  <part name='symbol' type='xsd:string'/>
  <part name='symbol' type='xsd:string'/>
</message> 

应该是这样的

<message name='net_receiveRequest'> 
  <part name='symbol1' type='xsd:string'/>
  <part name='symbol2' type='xsd:string'/>
  <part name='symbol3' type='xsd:string'/>
</message>


所以它有3个独立的值。一个非常简单的错误。

因为
if($val_-token==$token){
where
$val_-token='8mp8'
但是你发送了
$token=“8mp”
…@davidkonrad,我知道token不是相同的值,但我仍然在所有其他变量上得到该变量。确实发生了令牌验证,但除此之外,没有发送其他数据。
Web Service en linea
TOKEN: 8mp
tabla: 8mp
Json: 
8mp
Token de autenticacion no valido
<message name='net_receiveRequest'> 
  <part name='symbol' type='xsd:string'/>
  <part name='symbol' type='xsd:string'/>
  <part name='symbol' type='xsd:string'/>
</message> 
<message name='net_receiveRequest'> 
  <part name='symbol1' type='xsd:string'/>
  <part name='symbol2' type='xsd:string'/>
  <part name='symbol3' type='xsd:string'/>
</message>