我一直在从事一个项目(我将使用随机数据保留这篇文章的具体细节),该项目涉及将我们的系统(PHP 5.3.x+)与一家大公司的 API(他们提供 SDK)集成。他们提供了一个 WSDL 并声称我们需要匹配他们的方法,并且他们提供了输出(由 Soap 服务器生成的 XML)外观的示例。
现在,一切都按预期进行。当我从 SoapUI(我用来测试的一个应用程序)发送 XML 请求时,它会正确处理等等,但是 XML 输出与他们的示例不匹配,我们相信他们说我们必须接近他们的示例。
基本上,我们创建了一个使用服务名称初始化的不可知类,它初始化为一个非不可知类,该类通过以下方式使用:
/**
* The following is used to process Soap Server based on config and any optional settings.
*
* @param string $className
* @param array $options
* @param object $config
* @return Zend_Soap_Server
*/
public static function init($className, Array $options = null, $config = null)
{
// Used to define the class and return object.
$soap_server = new Zend_Soap_Server(null, $options);
$soap_server->setClass($className, null, (isset($config) ? $config : null));
$soap_server->handle();
exit;
}
问题本身在于输出的响应。如果他们对所有内容都非常具体,你们会建议我们如何构建 XML 输出?
1.) 我们的方法之一是moneyTransferRequest。当我为此发送 XML 时,它确实找到了方法并对其进行了处理。但是,他们希望它在响应中将方法名称显示为moneyTransferResponse,但它会输出moneyTransferRequestResponse。
2.) 我们的输出(对于变量以及作为对象返回的变量)有多个变量,例如我们会说 $money。此字段将返回为:
<money xsi:type="xsd:string">10.0</money>
他们希望它是:
<ns1:money xsi:type="xsd:string">10.0</money>
在回报。
我感谢有关该主题的任何帮助和意见。