【问题标题】:PHP: SOAP Webservice with JSON responcePHP:带有 JSON 响应的 SOAP Web 服务
【发布时间】:2026-01-17 22:15:01
【问题描述】:

我正在使用SOAPPHP 中开发webservice,我必须以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;

但是当我运行clientscript 时,它什么也没给出(一个空的json 对象):

当我在$server->register 中将方法的返回类型更改为string 并在方法中返回一个实际字符串时,它可以正常工作,但在JSON 对象的情况下就不行了。有什么帮助吗?

【问题讨论】:

    标签: php json web-services soap


    【解决方案1】:

    我在这里猜,既然你在服务器端做了一个json_encode,你必须在客户端做一个json_decode。

    将最后一行的代码更改为:

     echo $json;
    

     echo json_decode($json);
    

    【讨论】: