やってみる
ずっと JavaScript を避けていましたが、google maps が結構使えるっぽいのが分かったので、ちょっと触ってみました。
やりたいことは google maps で地点を特定して、それと、いくつかのスカラなデータをまとめて SOAP サービスに送って結果を出力する、というもの。
必要なのは、google maps api を使って、地図を表示。これはまあAPIのマニュアルと、あとはgoogle検索に聞いてだいたい分かります。
で、問題はSOAPサービスへのアクセス。
XmlHttpRequest は、貼り付いているページのブラウズ元と同じホストでないといけなくって Java Applet っぽい。まあ、これはいいや。
そっちはいいとしても、問題は、SOAPメッセージの送受信。スタブを作ってくれるようなモノは見つかりませんでした。FireFoxだと SOAP を扱いやすいオブジェクトがあるみたいですが、IEでも使えるようにするには、これはあきらめるしかないです。
もうちょいどうにかならんのかと思いつつ、WSDLを眺める…分からん。WSDLが何を書いているのか、まったく分からん。
仕方ないから Visual Studio を起動。Web参照でWSDLのスタブを作って、AXISについてくる tcpmon で、セッションを観察、と、なんか間違った方向でいろんなツールを駆使。
tcpmonで出てきたメッセージをもとに SOAP メッセージを DOM でちくちく作りました。
var s_envelope = s_data.createElement("soap:Envelope"); var s_data_body = s_data.createElement("soap:Body"); var s_method = s_data.createElement(<メソッド>); s_method.setAttribute( "xmlns", <ターゲットネームスペース> ); s_data_body.appendChild( s_method ); s_envelope.appendChild( s_data_body ); ... s_method に エレメント追加 ... s_envelope.setAttribute("xmlns:soap","http://schemas.xmlsoap.org/soap/envelope/"); s_envelope.setAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"); s_envelope.setAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema"); s_data.appendChild( s_envelope );