Веб-сервис Axis2 -> php

Если я правильно понял Axis2, я могу создать WebService, а затем получить к нему доступ с помощью любого клиента, совместимого с SOAP.

У меня есть класс Java с парой методов, которые я написал в Eclipse, а затем автоматически создал сервис с помощью подключаемого модуля Axis2 от WTP.

Это методы моего класса.

public int test(int i){
    return i+2;
}

public Car CarTest(int speed){

    return new Car("Biltest", speed);
}

public CarFactoryAdapter getCarFactory(){
    carFact.getCars().add(new Car("Bmw", 250));
    carFact.getCars().add(new Car("seat", 350));
    carFact.getCars().add(new Car("saab", 150));
    carFact.getCars().add(new Car("volv", 50));

    return new CarFactoryAdapter(carFact);
}

Код, похоже, работает, когда я пробую его с soapUI, и веб-интерфейс Axis2 распознает методы моей службы. Но когда я пытаюсь использовать методы, которые получают параметры с PHP, встроенным в soapClient, я получаю неизвестное исключение. Методы getCarFactory работают, по крайней мере, так, как ожидалось, но они кажутся ущербными, если я не могу отправлять параметры.

Пример вызова нерабочего метода.

ini_set('soap.wsdl_cache_ttl',0);
$client = new SoapClient("http://192.168.128.162:8080/ComplexWebService/services/CarService?wsdl", array('soap_version' => SOAP_1_2, 'trace' => 1));
$ar['i'] = (int)100;
print_r($client->__soapCall("test",$ar));

Мне нужно убедиться, что выбранная мной структура SOA сможет взаимодействовать со многими платформами, будут клиенты как минимум на PHP и Java, но было бы хорошо, если бы она работала, например, на .NET.


person Peter Hagström    schedule 22.10.2009    source источник


Ответы (1)


Похоже, что метод __soapCall принимает массив с массивами.

Так что я думаю, что

print_r($client->__soapCall("test",array($ar)));

Работает, по крайней мере, работает с JAX-WS..

person Peter Hagström    schedule 27.10.2009