【发布时间】:2012-12-16 02:51:45
【问题描述】:
tl;dr:发送多个字符串作为对 SOAP 请求的响应。
我是 SOAP 新手。我编写了一个简单的 Web 服务,它通过 SOAP 提供请求。因为我想在 PHP 中实现它,所以我使用了 NuSOAP 库。给我的 SOAP API 设计规范如下。
请求格式:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://www.sandeepraju.in/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<q0:getData>
<token>String</token>
</q0:getData>
</soapenv:Body>
</soapenv:Envelope>
示例/示例响应:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getDataResponse xmlns:ns2="http://www.sandeepraju.in/">
<return>
<Data>
<animal>cat</animal>
<phone>225</phone>
<code>FYI</code>
</Data>
我为上述规范编写的PHP代码如下。
require_once("../nusoap_old/lib/nusoap.php");
// Definition of getData operation
function getData($token) {
if($token == "somestring") {
return array("animal" => "cat", "phone" => "225", "code" => "FYI");
}
else {
return array("animal" => "null", "phone" => "null", "code" => "null");
}
}
// Creating SOAP server Object
$server = new soap_server();
// Setup WSDL
$server->configureWSDL('catnews', 'urn:catinfo');
$server->wsdl->addComplexType('return_array_php',
'complexType',
'struct',
'all',
'',
array(
'animal' => array('animal' => 'animal', 'type' => 'xsd:string'),
'phone' => array('phone' => 'phone', 'type' => 'xsd:string'),
'code' => array('code' => 'code', 'type' => 'xsd:string')
)
);
// Register the getData operation
$server->register("getData",
array('token' => 'xsd:string'),
array('return' => 'tns:return_array_php'),
'urn:catinfo',
'urn:catinfo#getData');
// Checking POST request headers
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA : "";
$server->service($HTTP_RAW_POST_DATA);
在这里,我认为我应该不返回一个 PHP 数组。但我不确定我应该根据规范返回什么。谁能帮我这个。还是返回数组是正确的?
【问题讨论】:
-
我会说这取决于 Nusoap 如何处理它。我不具体了解 Nusoap,所以除此之外我帮不上什么忙。也许他们的文档中对此进行了概述?
-
是的,你是对的。我没有找到太多 NuSoup 的文档。我想我有一个解决办法。我必须测试它。我是对的,我明天会在这里更新它,以便其他人遇到同样的问题时可以使用它。 :)
-
如果您找到了解决方案(即使只是中途),请将其作为答案留在下方。你甚至可以接受。这在这个网站上是完全有效的,非常受欢迎。对不起,我没有更多的帮助。
标签: php xml web-services soap nusoap