2009-10-22 46 views
1

如果我已經理解了Axis2,那麼我可以構造一個WebService,然後使用任何SOAP兼容的客戶端訪問它。Axis2 Webservice - > php

我有一個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界面已識別我的服務的方法。但是,當我嘗試使用soapClient構建的PHP接收參數的方法時,我得到一個未知異常。 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架構我選擇將能夠與衆多平臺comunicate,會有客戶至少PHP和Java,但它是很好的,如果它在工作,例如.NET到。

回答

0

似乎__soapCall方法需要一個數組與數組。

所以我認爲

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

作品,至少它與JAX-WS workes ..