php-soapを使った、SoapClientと、javaでのSoapServerでの結合テストが行われた。こちらは仕様書通りのSOAPメッセージを出しているから、バッチリだろう。そう思っていた。
すると、まずSOAPのバージョンから違った…。俺が実装してたのは、仕様書に載っていたSOAP1.2で、SoapServerが実装してたのはSOAP1.1だった。いきなり仕様書通りじゃないとは!
しかしこちらはクライアントなので、サーバに合わせなければならない。あれをこうして、それをああして、という話を聞いている間に、仕様書には書かれてないSOAPメッセージになった…。
とりあえず、修正したSOAPメッセージを使ったところ、通信できた。まあ一応よかった〜という話にはなったが、じゃああの仕様書は一体なんだったんだろう…。お客さんから届いた仕様書の通りに作ったのに、違いますって言われても…。違うのは仕様書ってことになるやん。その仕様書はお客さんからもらってるんだけど…。
まずは通信ができることを最優先するみたいだが、SOAP1.2を使う予定だったのに1.1で実装しているSoapServerが他のWebAPIで問題になるんじゃないかとヒヤヒヤしている。まあそれもテストをしていればわかることだが。
ちなみにスタブで使ってたphpのSoapServerでは、オプションでsoap_version => SOAP_1_1にして、クライアントはsoap_version => SOAP_1_2にしても、なぜか通信できてたみたい。柔軟に対応してくれるってことか?