如何强制我的 PHP SoapServer 发送 JSON 对象作为响应而不是 XML 文档?
谢谢。
那不是SOAP
,所以不是。它可以在某个 xml 节点中合并一个 jsonstring,仅此而已。您可能只需要一个REST
服务于json
.
不过,您可以将其混为一谈,根据定义使其不是 SOAP,而是一些奇怪的混合体:
<?php
class ThisIsNotASoapServer extends SoapServer {
}
function test(){
//should have a return
//return range(1,9);
//but totally breaks it by:
echo json_encode(range(1,9));
//the exit here is needed
exit;
}
$server = new ThisIsNotASoapServer(null, array('uri' => 'http://test-uri/','soap_version' => 1));
$server->addFunction("test");
$server->handle('<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:Test xmlns:m="Some-URI"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>');
?>
...所以,从技术上讲,这是可能的,但我怀疑没有一个客户能理解这一点。
看看http://www.sinatrarb.com它很容易创建一个安静的 Web 服务来返回一个 json 对象。
取决于您的要求 - SOAP 是一个 xml 请求,这并不意味着返回的格式也需要是 SOAP (XML),您可以轻松地回发 JSON 字符串。
也许如果您能提供更多信息,我们可以提供更多帮助?