Axis2 Webservice - > PHP

时间:2009-10-22 14:34:34

标签: java php soap web-services axis2

如果我已经理解了Axis2的正确性,我可以构建一个WebService,然后使用任何与SOAP兼容的客户端访问它。

我有一个java类,其中包含我在Eclipse中编写的几个方法,然后使用WTP的Axis2插件自动构建一个服务。

这是我班上的方法。

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-web界面已经识别出我的服务方法时,代码似乎有效。但是当Iam尝试使用PHP内置的soapClient接收参数的方法时,我得到一个Unknown异常。 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,那将会很好。

1 个答案:

答案 0 :(得分:0)

似乎__soapCall方法采用带数组的数组。

所以我认为

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

Works,至少它适用于JAX-WS ..