« BLOGにソースコードを書く方法 | トップページ | Ruby でproxyサーバ経由のSOAP/HTTP »

2007年9月18日 (火)

SOAPなRailgoをRubyで使う

遅ればせながらマッシュアップなんてものをやってみることになって、いろいろやってます。
まずは電車の経路検索なんかを使ってみようと思い、Railgoというやつを使ってみようと
思いました。

RailgoはSOAPのAPIです。
SOAPやらWSDLやらを扱うプログラムを書いたことがないJavaプログラマで
ちょっとRubyやってみたいなと思っていた自分としては、なんとなく
Rubyでやってみようと決めました。

(Rubyの本にはSOAPのAPIがデフォルトでついてるって書いてあって、
 かつ、どこかにAxis2は依存ライブラリが鬼のようにあってうざいと書いて
 あったからともいう。)


んで、はじめてみると、
実際RubyにはSOAP4rというライブラリがバンドルされていました。
が、ふたを開けてみると、ドキュメントがさっぱりなくて、正直、辟易しました。

 #Google先生がSOAP4r hell なんていうタイトルの英語の記事を教えてくれて、
 #そこにドキュメントもサンプルもなんにもねぇぇ・・死にそうだぁ・・ってかいてあり、
 #ライブラリ作者はいろいろ開発ML等で「ドキュメントは、かかないよー」
 #なんてかいてあり・・
 #
 #途方にくれて、Rubyやめようかともおもったよ・・まったく


自分もドキュメント書くのぜんぜんだめな人なのですが、
すばらしい反面教師に出会ってドキュメント書く能力
(やる気ともいう)があがった気がするので、まあよしとしよう。

本題は、ライブラリのソースみたり、Google先生に聞いたり、
試行錯誤の繰り返しで、とりあえず以下が動いたという報告であります。

 #ソースを追ってたら、Rubyスキルもちょっと上がったかも^^

RubyもSOAPも 初心者なので、変な記述があるかもですが、
現時点で日本語・英語含めて、SOAP4rに関する
情報がほとんどないので・・まあ、こんなんでも
だれかの役にたつかもということで、ポストしときますー


認証用ハンドラ(RailgoAuthHandler.rb)

require 'soap/header/simplehandler' 
require 'xsd/qname'

module Mashup
class RailgoAuthHandler < SOAP::Header::SimpleHandler
def initialize
nsUri = 'http://expart.est.co.jp/ExpService'
name = 'Authentication'
super(XSD::QName.new(nsUri, name).freeze)
end

def on_simple_outbound
{ 'User'=> 'mctuser3', 'Password' =>'symfyws6'}
end
end
end


CGIプログラム(test.cgi)

#!/usr/local/bin/ruby -Ku
require 'cgi'
require 'soap/wsdlDriver'
require './RailgoAuthHandler'

cgi = CGI.new

WSDL_URL = 'http://wstest.railgo.jp/ExpService06.asmx?wsdl'
wsdlFactory = SOAP::WSDLDriverFactory.new(WSDL_URL)
driver = wsdlFactory.create_rpc_driver
driver.generate_explicit_type = true

#For auth
handler = Mashup::RailgoAuthHandler.new
driver.headerhandler.add(handler)


#Call
begin
#response =driver.GetDefaultNavigation({})
request = {'StationYomi'=>"新宿",
'AreaType' => "Japan",
'StationType' =>"RailRoad",
'Date'=>'20070117'}
response =driver.SearchStation(request)
rescue SOAP::FaultError => err
print err
raise
end

# output
print cgi.header({"charset" => "utf-8"})
puts "Response:" + response.inspect

« BLOGにソースコードを書く方法 | トップページ | Ruby でproxyサーバ経由のSOAP/HTTP »

Ruby」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/34023/16487658

この記事へのトラックバック一覧です: SOAPなRailgoをRubyで使う:

» proxyサーバ経由のSOAP/HTTP [ある異邦人のつぶやき]
あ、そうそう、先ほどのSOAPなRailgoをRubyで使うですが、 それと、会 [続きを読む]

« BLOGにソースコードを書く方法 | トップページ | Ruby でproxyサーバ経由のSOAP/HTTP »

Haruya's Violin

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

最近のトラックバック

無料ブログはココログ