<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>SOAP / Drkcore</title><link>http://blog.kzfmix.com/SOAP</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Thu, 14 Dec 2006 21:19:10 +0919</lastBuildDate><item><title>SOAPAction</title><link>http://blog.kzfmix.com/entry/1166098750</link><description>&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1166018920"&gt;昨日のエラー&lt;/a&gt;は、SOAPpyのSOAPActionがなんかおかしいということで落ち着いた。&lt;/p&gt;
&lt;p&gt;あれこれとwebをあさってみたのだけど、結局デバッグのやり方がわからなかったので、直接観測することにした。久しぶりのetherealだ。&lt;/p&gt;
&lt;p&gt;とかいって、ここんとこ使う機会もなかったのでインストールから。最近のFCだと&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;yum&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;ethereal&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;だとGUIが入らなくて、&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;yum&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;ethereal&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gnome&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;なのね。知らんかった。&lt;/p&gt;
&lt;p&gt;でもって、パケットキャプチャーしながら、httpのみフィルタでSOAP::Liteのクライアントと、SOAPpyクライアントのXMLを比較したところ、SOAPpyはヘッダーのSOAPActionがなんか変だということに気付いた。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;SOAPAction:&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hi&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;と、メソッド名が入ってるし、、、、エラーの原因がなんとなく見えてきた。で、なんじゃこりゃーとかいいながらSOAPAction直接指定したらやっぱ動いた。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SOAPProxy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/cgi-bin/test.cgi&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/Demo&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="n"&gt;soapaction&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/Demo#hi&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="s"&gt;&amp;#39;hello, world&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;でも、これだとあんま意味ないし。なんでデフォルト空文字列にならないのかなぁ（ソースをちら見したけどわからんかった）。SOAP::Liteで書いたサーバーのほうでSOAPAction無視するようにすればいいのかも知れないけどなんか気持ち悪いんだよナァ。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://del.icio.us/kzfm/SOAP"&gt;SOAP関連&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;DWの第三部は相互運用性とかいうネタなのな。なんだかなー（といまさらながら）思った。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.genome.jp/kegg/soap/doc/keggapi_manual_ja.html"&gt;KEGG&lt;/a&gt;みたいにWSDL書いてやればこういうことあんま気にしなくていいのかなぁ(rubyでもperlでもpythonでも楽チンですよみたいに見えるし)。それとも結構苦労したのかな？&lt;/p&gt;</description><pubDate>Thu, 14 Dec 2006 21:19:10 +0919</pubDate><category>SOAP</category></item><item><title>SOAPなのに異種言語間で躓く</title><link>http://blog.kzfmix.com/entry/1166018920</link><description>&lt;p&gt;perl同士だと、うまく通信できてんのにpythonのクライアントだとこける。&lt;br /&gt;
が、原因がさっぱしわからん。&lt;/p&gt;
&lt;h4&gt;サーバー&lt;/h4&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c1"&gt;#!/usr/bin/perl -w&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;SOAP::Transport::&lt;/span&gt;&lt;span class="n"&gt;HTTP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nn"&gt;SOAP::Transport::HTTP::&lt;/span&gt;&lt;span class="n"&gt;CGI&lt;/span&gt;   
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;dispatch_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Demo&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nb"&gt;package&lt;/span&gt; &lt;span class="n"&gt;Demo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;sub &lt;/span&gt;&lt;span class="nf"&gt;hi&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                     
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;hello, world&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h4&gt;perlクライアント&lt;/h4&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c1"&gt;#!/usr/bin/perl -w&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;SOAP::&lt;/span&gt;&lt;span class="n"&gt;Lite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="nn"&gt;SOAP::&lt;/span&gt;&lt;span class="n"&gt;Lite&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/Demo&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/cgi-bin/soap.cgi&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;でうまく動くのに、&lt;a href="http://www.diveintopython.org/"&gt;Dive into python&lt;/a&gt; 12章を参考にしたpythonクライアントは動かん。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;SOAPpy&lt;/span&gt; &lt;span class="nb"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SOAPProxy&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SOAPProxy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://localhost/cgi-bin/soap.cgi&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;urn:Demo&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;で実行すると、下のエラー&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;SOAPpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Types&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;faultType:&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Fault&lt;/span&gt; &lt;span class="n"&gt;soap:Client:&lt;/span&gt; &lt;span class="n"&gt;SOAPAction&lt;/span&gt; &lt;span class="n"&gt;shall&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;uri#method&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;got&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;hi&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;expected&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;urn:Demo#hi&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;もうすこし、ちゃんと理解しないといけないなぁ。&lt;/p&gt;</description><pubDate>Wed, 13 Dec 2006 23:08:40 +0919</pubDate><category>SOAP</category></item><item><title>SOAPsh.pl</title><link>http://blog.kzfmix.com/entry/1138857036</link><description>&lt;p&gt;&lt;a href="http://mfpm.blogdb.jp/app/view/SOAP::Lite/"&gt;SOAP::Lite&lt;/a&gt;をインストールすると、もれなくSOAPsh.plがついてくることをいまさら知った。&lt;/p&gt;
&lt;p&gt;webmonkeyの&lt;a href="http://hotwired.goo.ne.jp/webmonkey/2002/13/index0a.html"&gt;SOAPを使ってスッキリサッパリ&lt;/a&gt;の乱数生成サンプルを対話的に処理してみると&lt;/p&gt;
&lt;blockquote class="terminal"&gt;
&lt;code&gt;
$ SOAPsh.pl http://localhost/cgi-bin/random.cgi http://localhost/Random
Usage: method[(parameters)]
&gt; choose()
--- SOAP RESULT ---
'1'
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;こんな感じで、対話的に処理できるようになるのでデバッグとか便利。あとはシェルからちょこっと叩きたいときか。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IDとかの手で打てるぐらい短い文字列を入力にして、ちょっとした数字とか文字が帰ってくるようなツールだったらなんでも便利に使えそうな気がする。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;物性の予測とかSOAPにしてあるので、smilesなげてやると結果が戻ってきたりとか。rule of 5とかrule of 3戻したりでもいいなぁ。&lt;/p&gt;</description><pubDate>Thu, 02 Feb 2006 14:10:36 +0919</pubDate><category>perl</category><category>SOAP</category></item><item><title>DDBJにSOAPってみる</title><link>http://blog.kzfmix.com/entry/1138790195</link><description>&lt;p&gt;SOAPな環境も出来たので、外のサーバーにSOAPでクエリを送ってみることに、わりと近めの&lt;a href="http://xml.ddbj.nig.ac.jp/tutorial/index_jp.html"&gt;遺伝研&lt;/a&gt;チュートリアルをみながら。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;楽勝!! スクリプトがスッキリしててなんか気持ちいい&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote class="terminal"&gt;
#!/usr/bin/perl
#SOAP Lite のインクルード
use SOAP::Lite;
#WSDLの指定
$service = SOAP::Lite -&gt; service('http://xml.nig.ac.jp/wsdl/GetEntry.wsdl');
#WEBサービスの呼び出し
$result = $service-&gt;getXML_DDBJEntry("AB000003");
print $result;
&lt;/blockquote&gt;

&lt;p&gt;この勢いで、&lt;a href="http://web.ncbi.nlm.nih.gov/entrez/query/static/esoap_help.html"&gt;E-Utilities Web Service&lt;/a&gt;にチャレンジしたが、どうもうまくいかない。パラメータの辺りなんだけど、、、&lt;/p&gt;
&lt;p&gt;SOAPでpubmed検索してみたかったんだが、、、、&lt;/p&gt;</description><pubDate>Wed, 01 Feb 2006 19:36:35 +0919</pubDate><category>bioinformatics</category><category>NCBI</category><category>SOAP</category><category>DDBJ</category></item></channel></rss>