Я разрабатываю webservice
в PHP
используя SOAP
и мне нужно вернуть ответ в формате JSON
. Метод Webservice
прост. Он принимает array
как входной сигнал и должен возвращать объект JSON
. Регистрация метода в webservice
выглядит так:
$server->register(
'getProducts',
array('arr' => 'xsd:array'),
array('return' => 'xsd:json')
);
И я делаю это внутри метода:
$sql3 = "SELECT name, price from products WHERE status_id=$staus_id and cat_id=$cat_id";
$result3 = $conn->query($sql3);
$row3 = mysqli_fetch_all($result3, MYSQLI_ASSOC);
$json = json_encode($row3);
return $json;
Если на стороне client
я делаю это, чтобы поймать объект и повторить его:
$response = $client->getProducts($param);
echo $response;
Но когда я запускаю client
script
, он ничего не дает (пустой объект json
):
Когда я изменяю возвращаемый тип метода на string
в $server->register
и я возвращаю фактическую строку в методе, он отлично работает, но не в случае объекта JSON
. Любая помощь?
Я предполагаю, что, поскольку вы сделали json_encode на стороне сервера, вы должны сделать json_decode на стороне клиента.
Измените код на последней строке:
echo $json;
в
echo json_decode($json);