I have created follwing Web Service using Zend Version 1.11
I want to change Namespace where xsd
is default change to s
.
How to change any of the namespace alias?
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
to
xmlns:s="http://www.w3.org/2001/XMLSchema"
How can I change Default Message section:
Default it is generated as getGroupIn
should be getGroupRequest
And
getGroupOut
should be getGroupResponse
Is it possible to change the WSDL Order as per W3C?
The structure of your WSDL is
types (1)
portType (1)
binding (1)
service (1)
message (2)
But should be
types
messages
portTypes
bindings
services
WSDL
if(isset($_GET['wsdl'])) {
$autodiscover = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');
$autodiscover->setUri("http://localhost/ZendSoap/services/testwsdl.php");
$autodiscover->setClass('Test');
$autodiscover->handle();
} else {
$soap = new Zend_Soap_Server("http://localhost/ZendSoap/services/testwsdl.php?wsdl"); // this current file here
$soap->setClass('Test');
$soap->handle();
}
class Person
{
/** @var string */
public $name = '';
}
class Group
{
/** @var Person[] */
public $persons;
}
class Test
{
/**
* @return Group
*/
public function getGroup()
{
$group = new Group();
$person = new Person();
$person->name = "Annah";
$group->persons[] = $person;
$person = new Person();
$person->name = "Sarah";
$group->persons[] = $person;
return $group;
}
}
My WSDL Looks like following:
<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://localhost/ZendSoap/services/testwsdl.php" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="Test" targetNamespace="http://localhost/ZendSoap/services/testwsdl.php">
<types>
<xsd:schema targetNamespace="http://localhost/ZendSoap/services/testwsdl.php">
<xsd:complexType name="ArrayOfPerson">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:Person[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Person">
<xsd:all>
<xsd:element name="name" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="Group">
<xsd:all>
<xsd:element name="persons" type="tns:ArrayOfPerson" nillable="true"/>
</xsd:all>
</xsd:complexType>
</xsd:schema>
</types>
<portType name="TestPort">
<operation name="getGroup">
<documentation>@return Group</documentation>
<input message="tns:getGroupIn"/>
<output message="tns:getGroupOut"/>
</operation>
</portType>
<binding name="TestBinding" type="tns:TestPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getGroup">
<soap:operation soapAction="http://localhost/ZendSoap/services/testwsdl.php#getGroup"/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/ZendSoap/services/testwsdl.php"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/ZendSoap/services/testwsdl.php"/>
</output>
</operation>
</binding>
<service name="TestService">
<port name="TestPort" binding="tns:TestBinding">
<soap:address location="http://localhost/ZendSoap/services/testwsdl.php"/>
</port>
</service>
<message name="getGroupIn"/>
<message name="getGroupOut">
<part name="return" type="tns:Group"/>
</message>
</definitions>