やってみる

ずっと 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 );