我遇到了从服务器获取的SOAP信封问题。 信封看起来像这样:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:HelloService" xmlns:ns2="http://localhost/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:selectAchievementResponse>
<array SOAP-ENC:arrayType="ns2:Info[2]" xsi:type="ns2:ListOfInfo">
<item xsi:type="ns2:card">
<id xsi:type="xsd:int">1</id>
<name xsi:type="xsd:string">test</gameName>
<titel xsi:type="xsd:string">achievement</titel>
<description xsi:type="xsd:string">desc</description>
<points xsi:type="xsd:int">123</points>
</item>
虽然我希望它看起来更像下列内容:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.jpreece.com/soap/CustomerLookup">
<SOAP-ENV:Body>
<ns1:GetAllCustomersResponse xmlns:ns1="http://localhost/CustomersWebService/index.php">
<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Customer[14]">
<item xsi:type="tns:Customer">
<id xsi:type="xsd:int">1</id>
<phonenumber xsi:type="xsd:string">01925 658942</phonenumber>
<businessname xsi:type="xsd:string">Darli Bar</businessname>
</item>
主要问题似乎是xsi:输入:
xsi:type="SOAP-ENC:Array"
VS
xsi:type="ns2:Achievements"
第一个生成我想要的响应,而后者根本不起作用。 我也可以给你WSDL
<xsd:complexType name="Info">
<xsd:all>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="titel" type="xsd:string"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="points" type="xsd:int"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="ListOfInfo">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="Info[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
我有点坚持我已经开始比较第一个和第二个WSDL的问题,但它们几乎相同。所以我现在问我怎样才能返回我想要返回的响应。这个web服务在PHP上运行。 编辑:添加了更多信息。 链接到Web服务的WSDL,它做了我期望它做的事情:(http://www.jpreece.com/customerswebservice/index.php?wsdl) 第二个是我自己的网络服务:
http://www.copypastecode.com/135641/
我的网络服务的php:http://www.copypastecode.com/135645/ 第一个的PHP看起来像这样:http://www.copypastecode.com/135649/
编辑2它现在正在工作,因为使用NuSoap服务器而不是标准服务器。 但这仍然让我感到疑惑是因为你需要一个没有维护的PHP中的肥皂 一堆额外的使它工作。但我必须说一切现在都应该如此。