Ben bir PHP istemci kullanarak bir merhaba dünya axis2 SOAP web hizmeti tüketmeye çalışıyorum. Java sınıf NetBeans yazılır ve axis2 aar dosya Netbeans axis2 eklentisi kullanarak oluşturulur.
Hepsini daha önce gördüm ama burada java sınıfı bulunuyor:
public class SOAPHello {
public String sayHello(String username) {
return "Hello, "+username;
}
}
Axis2 tarafından genereated wsdl ben hizmet tüketmek ben böyle çılgın bir PHP komut dosyası kullanmak zorunda, böylece tüm parametreleri sarmak gibi görünüyor:
$client = new SoapClient("http://myhost:8080/axis2/services/SOAPHello?wsdl");
$parameters["username"] = "Dave";
$response = $client->sayHello($parameters)->return;
echo $response."!";
Gerçekten yapmak istediğiniz tüm olduğunda
echo $client->sayHello("Dave")."!";
Benim soru iki yönlüdür: bu neden oluyor? ve ben bunu durdurmak için ne yapabilirim? :)
İşte en oluşturulan WSDL türleri, mesaj ve PortType bölümler:
<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>