如何在PHP中从SOAP调用获取JSON响应

如何在PHP中从SOAP调用获取JSON响应,php,soap-client,Php,Soap Client,由于SOAP客户端默认返回XML响应,所以我需要得到JSON响应,而不是XML响应 $client = new SoapClient(null, array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); 在这种情况下,需要在中设置什么属性,以便返回JSON响应?SOAP只支持XML消息格式 如果您试

由于SOAP客户端默认返回XML响应,所以我需要得到JSON响应,而不是XML响应

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));

在这种情况下,需要在中设置什么属性,以便返回JSON响应?

SOAP只支持XML消息格式

如果您试图连接的SOAP服务器是您没有直接访问权的第三方服务器,则必须在接收到XML响应后将其转换为JSON,如本例所示


如果希望web服务服务器支持json等不同的数据类型,则需要研究SOAP仅支持XML消息格式

如果您试图连接的SOAP服务器是您没有直接访问权的第三方服务器,则必须在接收到XML响应后将其转换为JSON,如本例所示


如果您希望web服务服务器支持不同的数据类型,如json,您需要研究一下

,根据我从一些研究中发现的情况,SoapClient没有任何内置的方法可以直接将数据作为json返回(其他人都知道如果我错了,这将节省大量事后处理!)因此,您可能需要获取XML返回的数据并手动解析它

我记得SimpleXMLElement提供了一些有用的功能,可以肯定的是,有人编写了一些代码片段来实现这一点:

$value){
$res=null;
normalizeSimpleXML($value$res);
如果(($key='@attributes')&&($key)){
$result=$res;
}否则{
$result[$key]=$res;
}
}
}否则{
$result=$data;
}
}
normalizeSimpleXML(simplexml\u load\u字符串($xml),$result);
返回json_encode($result);
}
?>

根据我在一些研究中发现的情况,SoapClient没有任何内置方法可以直接以JSON的形式返回数据(其他人都知道如果我错了,这将节省大量事后处理!),因此您可能需要获取XML返回的数据并手动解析它

我记得SimpleXMLElement提供了一些有用的功能,可以肯定的是,有人编写了一些代码片段来实现这一点:

$value){
$res=null;
normalizeSimpleXML($value$res);
如果(($key='@attributes')&&($key)){
$result=$res;
}否则{
$result[$key]=$res;
}
}
}否则{
$result=$data;
}
}
normalizeSimpleXML(simplexml\u load\u字符串($xml),$result);
返回json_encode($result);
}
?>

如果结果为PHP数组格式,例如:

object(stdClass)#2(6){[“category_id”]=>int(1)[“parent_id”]=> int(0)[“名称”]=>string(12)“根目录”[“位置”]=>int(0)

然后您可以使用

//result is the variable with php array value
$JSON = json_encode($result);

print_r($JSON);
详细了解,,
观察-

如果结果是PHP数组格式,例如:

object(stdClass)#2(6){[“category_id”]=>int(1)[“parent_id”]=> int(0)[“名称”]=>string(12)“根目录”[“位置”]=>int(0)

然后您可以使用

//result is the variable with php array value
$JSON = json_encode($result);

print_r($JSON);
详细了解,,
观看-

非常好的解决方案!非常好的解决方案!