在PHP中验证传入的SOAP请求到WSDL

Gle*_*oss 10 php xsd soap wsdl

内置PHP的扩展SOAP不验证传入一切SOAP反对该请求XML SchemaWSDL.它确实检查了基本实体的存在,但是当你有像复制这样复杂的东西时simpleType,扩展几乎忽略了它们的存在.

验证包含在内的SOAP请求的最佳方法XML SchemaWSDL什么?

小智 3

几个小时以来一直在研究这个问题。本机 PHP SoapServer 和 NuSOAP 库都不进行任何验证。PHP SoapServer 只是进行类型转换。例如,如果您定义

<xsd:element name="SomeParameter" type="xsd:boolean" />
Run Code Online (Sandbox Code Playgroud)

并提交

<get:SomeParameter>dfgdfg</get:SomeParameter>
Run Code Online (Sandbox Code Playgroud)

你会得到 php Type boolean (true)

尽管 NuSOAP 可以识别简单类型,但它只是将所有内容转换为字符串:

来自 nuSOAP 调试日志:

nusoap_xmlschema: processing typed element SomeParameter of type http://www.w3.org/2001/XMLSchema:boolean
Run Code Online (Sandbox Code Playgroud)

所以最好的方法是 joelhardi 解决方案来验证自己或使用像 XERCES 这样的 xml 解析器