1

Axis2が正しいことを理解していれば、WebServiceを構築して、SOAP互換クライアントでアクセスできます。

Eclipseで記述したいくつかのメソッドを持つJavaクラスがあり、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インターフェースが私のサービスのメソッドを認識しています。しかし、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で動作するのは良いことです。

4

1 に答える 1

0

__soapCall メソッドは配列で配列を取るようです。

だから私は思う

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

動作します。少なくとも JAX-WS では動作します。

于 2009-10-27T17:01:49.010 に答える