Я пытаюсь использовать всемирный веб-сервис AXIS2 SOAP с помощью PHP-клиента. Класс Java написан в Netbeans, и AAR-файл AXIS2 создается с использованием плагина Netbeans AXIS2.Могу ли я заставить Axis2 генерировать WSDL с «развернутыми» типами?
Вы все видели это раньше, но вот класс Java:
public class SOAPHello {
public String sayHello(String username) {
return "Hello, "+username;
}
}
WSDL-genereated по axis2, кажется, чтобы обернуть все параметры так, чтобы, когда я потребляю службы я должен использовать сумасшедший PHP скрипт как это:
$client = new SoapClient("http://myhost:8080/axis2/services/SOAPHello?wsdl");
$parameters["username"] = "Dave";
$response = $client->sayHello($parameters)->return;
echo $response."!";
Когда все, что я действительно хочу сделать, это
echo $client->sayHello("Dave")."!";
Мой д uestion в два раза: почему это происходит? и что я могу сделать, чтобы остановить его? :)
Вот являются разделы типов, сообщений и PortType сгенерированной: WSDL
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://soap.axis2.myhost.co.uk">
<xs:element name="sayHello">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="username" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sayHelloResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="sayHelloRequest">
<wsdl:part name="parameters" element="ns:sayHello"/>
</wsdl:message>
<wsdl:message name="sayHelloResponse">
<wsdl:part name="parameters" element="ns:sayHelloResponse"/>
</wsdl:message>
<wsdl:portType name="SOAPHelloPortType">
<wsdl:operation name="sayHello">
<wsdl:input message="ns:sayHelloRequest" wsaw:Action="urn:sayHello"/>
<wsdl:output message="ns:sayHelloResponse" wsaw:Action="urn:sayHelloResponse"/>
</wsdl:operation>
</wsdl:portType>