我正在使用PHP SoapClient来使用Web服务..
当服务参数很简单时,一切都运行正常,例如$ client-> GetProductById(array('productId'=>'ID'));诀窍......
但是我需要访问的服务之一需要更复杂的参数..我已经使用SoapUI来测试web服务,而使用SoapUI我可以很容易地使它工作..
问题是我无法使用PHP SoapClient,我根本无法找到表示所有这些参数的方法。
发送到服务器的Soap消息是(从SoapUI复制)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:slps="http://www.microsoft.com/slps/">
<soapenv:Header/>
<soapenv:Body>
<slps:GetLicensesByFilter>
<slps:filter>
<slps:ExcludeCommercial>false</slps:ExcludeCommercial>
<slps:ExcludeTrial>false</slps:ExcludeTrial>
<slps:IssueDateRange>
<slps:End>2011-12-31T00:00:00.000Z</slps:End><slps:Start>2011-11-01T00:00:00.000Z</slps:Start>
</slps:IssueDateRange>
<slps:ProductId>1275b704-7622-c2xx-922e-76186497f744</slps:ProductId>
<slps:SkuId>A35138F43-0119-0719-802a-B48CCE6229A4</slps:SkuId>
</slps:filter>
<slps:retrievalOptions>LicenseInfo</slps:retrievalOptions><slps:pageIndex>0</slps:pageIndex>
</slps:GetLicensesByFilter>
</soapenv:Body>
</soapenv:Envelope>
答案 0 :(得分:1)
我认为这里的方法是根据你的* .wsdl文件生成相关的php类。这可以使用像wsdl2php - &gt;这样的工具来完成。 http://www.urdalen.no/wsdl2php/
之后,您可以使用生成的Service类进行Web服务调用,也可以在创建Soap Client实例时获取相关类并使用“classmap”选项。
答案 1 :(得分:0)
问题的原始作者,从问题转移到答案:
编辑:最后我明白了;)
可能不是最好的方法,但是它有效,我已经按照用户离开PHP论坛的提示...基本上我必须创建一些类来表示参数结构,然后当我不得不使用'classmap '选择SoapClient将WSDL类型映射到我的PHP类......