使用Servicestack WSDL与PHP

时间:2014-01-14 17:33:17

标签: wsdl servicestack

我正在尝试使用ServiceStack替换WCF以获取自托管服务,使用从WSDL上形成其消息的PHP客户端进行访问。

ServiceStack生成的WSDL具有名为“par”的“部件名称”,例如:

<wsdl:message name="GetServiceDetailsIn">   
    <wsdl:part name="par" element="tns:GetServiceDetails" />    
</wsdl:message>

然后PHP生成的SOAP请求如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body><par/></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

而不是来自内置帮助:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body> 
        <GetServiceDetails xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:Shout" />
    </soap:Body>
</soap:Envelope>

PHP客户端使用了par标记而不是GetServiceDetails,并且它获得了空白响应。可以在ServiceStack中重命名或删除“部件名称”定义吗?

1 个答案:

答案 0 :(得分:0)

似乎你无法在ServiceStack中对此做任何事情,而且它无法用于PHP。但是,如果您在发送之前让PHP使用find-and-replace或XSLT调整XML标记,则可以使其正常工作。