Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2007-12-06

Microsoft SOAP Toolkitを使ってJScriptでSOAP - 低レベルAPI (1) SoapConnector, SoapReader

| 19:48 |  Microsoft SOAP Toolkitを使ってJScriptでSOAP - 低レベルAPI (1) SoapConnector, SoapReader - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  Microsoft SOAP Toolkitを使ってJScriptでSOAP - 低レベルAPI (1) SoapConnector, SoapReader - Ci.nsIZIGOROu

低レベルAPIを使ったクライアント作成の流れ

低レベルAPIを使って自前でSoap Clientになりたい場合の流れは。

  1. HttpConnectorでInput/Outputストリームを準備する
    1. EndPointURLを明示的に指定
    2. SoapActionも明示的に指定
  2. HttpConnector.BeginMessage()
  3. SoapSerializerでリクエストデータを作る
    1. 最初にHttpConnector.InputStreamでSerializerを初期化
    2. 構造体は配列も自分で頑張って作らなきゃいけない *1
  4. HttpConnector.EndMessage() - この時点でリクエスト完了
  5. HttpConnector.OutputStreamでSoapReader.Init()する
  6. レスポンスデータはDOMで何とかする

って流れになる。

サンプル

var soapConnector = new ActiveXObject("MSSOAP.HttpConnector");
var soapSerializer = new ActiveXObject("MSSOAP.SoapSerializer");
var soapReader = new ActiveXObject("MSSOAP.SoapReader");

soapConnector.Property("EndPointURL") = "http://btonic.est.co.jp/Netdic/Netdicv10.asmx";
soapConnector.Property("SoapAction") = "http://btonic.est.co.jp/NetDic/NetDicV09/GetDicList";
soapConnector.Property("ProxyServer") = "localhost";
soapConnector.Property("ProxyPort") = 8000;

soapConnector.BeginMessage();
soapSerializer.Init(soapConnector.InputStream);

soapSerializer.startEnvelope("", "STANDARD");
soapSerializer.startBody();
soapSerializer.startElement("GetDicList", "http://schemas.xmlsoap.org/soap/envelope/", "", "SOAPSDK1");
soapSerializer.startElement("AuthTicket");
soapSerializer.endElement();
soapSerializer.endElement();
soapSerializer.endBody();
soapSerializer.endEnvelope();

soapConnector.EndMessage();

soapReader.Load(soapConnector.OutputStream);

var stream = new ActiveXObject("ADODB.Stream");
stream.Type = 2;
stream.Charset = "UTF-8";

stream.Open();
stream.WriteText(soapReader.DOM.xml);
stream.SaveToFile("result.xml");
stream.Close();

ADODB.StreamのSaveToFileは既にファイルが存在すると作ってくれないので、適宜消す事w

あと結果が見づらい場合はcygwinユーザーならば、

$ xmllint --noent --format result.xml

みたいにする。

これでとりあえずリクエストとレスポンスを低レベルで行う事は出来た。

まとめ

どう考えてもWSDL見て良しなにやってくれるwrapperが欲しい。

が作る気はしないw


re:MozReplの使い方がいまひとつよくわからない。

| 18:24 |  re:MozReplの使い方がいまひとつよくわからない。 - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  re:MozReplの使い方がいまひとつよくわからない。 - Ci.nsIZIGOROu

聞いてくれればいいのにw

準備編

rlwrap, socatなどのコマンドラインツールと共に使うのが必須。

$ rlwrap telnet localhost 4242

そうしないでcmd.exeからtelnetとかやると、

repl> repl.home()[object ChromeWindow] MozReplの使い方がいまひとつよくわからない。

みたいになる。

せっかちな使い方

せっかちな人向けに言えば、

repl.inspect(repl);

プロパティがもりっと取れます。

メソッド名で推測するw *2

*1:激しく面倒ww

*2:あるいはrepl.search.toSource()とかね。

smellmansmellman2007/12/07 20:58meadow付属のtelnetを勧めてる俺ってマニアックだよね><

ZIGOROuZIGOROu2007/12/09 01:17んなこたーないですw
ってありましたね、そういうの。

Emacs連携もあるですよ>mozrepl

GuestthipsGuestthips2018/06/14 19:39guest test post
<a href=" http://temresults2018.com/ ">bbcode</a>
<a href="http://temresults2018.com/">html</a>
http://temresults2018.com/ simple