我们正面临一个PHP soap服务器的奇怪行为。 WSDL包含一个简单的xsd布尔元素。对于此字段,值为false(仅为false!)的简单soap请求有时会在soap服务器本身处理的std类/属性中以null结尾。
soap请求始终包含布尔值false(通过服务器端的文件输入检查)。
它表明第一个请求无法正常工作。以下似乎是正确的。
这种竞争条件可能发生的一些想法?
更新:以下是一些可能有用的代码。
WDSL xsd元素:
<xsd:element name="isSent" type="xsd:boolean">
肥皂要求:
<isSent>false</isSent>
肥皂服务器:
$serverOptions = [
'soap_version' => SOAP_1_2,
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_MEMORY
];
$soapServer = new SoapServer((string)$request->getWsdlUri(), $serverOptions);
$serviceWrapper->setRequest($request);
$this->request->setBody(file_get_contents('php://input'));
$soapServer->handle($this->request->getBody());
//When receiving the std class after soap server handles the request the issue happens...