[Tokyo.pm] Re: .NET site
Kawai,Takanori
GCD00051 @ nifty.ne.jp
2001年 6月 12日 (火) 07:00:47 CDT
川合孝典です。
スクリプトと実行結果が入っているので、長文になっています。
なひさんも召喚しないと思っていたら、今メールがありました。
止められてもとりあえず動いたので、その結果だけ。
必要とあればトレースも出しますがいかがしましょ?
#って、それはSOAP-mlのほうがよいでしょうかね。
----- Original Message -----
From: "OKABE, Keiichi" <okabe @ isl.ntt.co.jp>
To: <tokyo-pm-list @ pm.org>
Sent: Tuesday, June 12, 2001 7:20 PM
Subject: [Tokyo.pm] .NET site
> 岡部です.
>
> Microsoft TechNet Flash Japan 6/13を見ていたら,
> .NET 早期開発パイロット試験Webサイト公開という記事が
> でていました.
> http://net.est.co.jp/jtb/about/
>
> このサーバはSOAPでアクセスするのでしょうから,Perlから
> 叩いても動きそうです.どなたかやってみませんか?
>
> # って,川合さんを召喚してるだけだったりして. (^^;
しっかり召喚されました(^^;;;。
WinNT + AcitvePerl Build 620 + SOAP::Lite 0.50と
Linux + Perl 5.005_03 + SOAP::Lite 0.50で、ほとんどそのまま
呼び出すことができました。
「ほとんど」というのは、Lite.pmの70行目
$DO_NOT_USE_CHARSET = 0;
を
$DO_NOT_USE_CHARSET = 1;
としないとうまく動かなかったためです。
#text/xml; charset='utf-8'というのはイヤンと嫌われてしまう。
あとSOMへの変換がうまくいかないようです。
#Enumへの対応ってことなのでしょうか?きちんと調べないと...
実行したスクリプトとその結果は以下の通りです。
本当はAccountを取るものもやりたかったのですが、とりあえず現状の
ものでご報告。
[実行したスクリプト]
use strict;
use Jcode;
use SOAP::Lite;
sub DspCountry($) {
my($rhCnt) =@_;
print ">> COUNTRY -------------------------------------\n",
"CODE: $rhCnt->{CountryCode}\n",
"NAME: $rhCnt->{CountryName}\n",
"AREA: ", jcode($rhCnt->{Area}, 'utf8')->sjis, "\n";
}
sub DspAirport($) {
my($rhCnt) =@_;
print ">> AIRPORT -------------------------------------\n",
"CODE: $rhCnt->{AirportCode}\n",
"NAME: $rhCnt->{AirportName}\n",
"CODE: $rhCnt->{CountryCode}\n",
"CITY: $rhCnt->{CityCode}\n"
;
}
sub DspHotel($) {
my($rhCnt) =@_;
print ">> Hotel -------------------------------------\n",
"CRSCode : $rhCnt->{CRSCode}\n",
"HotelCode: $rhCnt->{HotelCode}\n",
"CityCode : $rhCnt->{CityCode}\n",
"HotelName: $rhCnt->{HotelName}\n",
"CityName : $rhCnt->{CityName}\n",
"Address : $rhCnt->{Address}\n",
"Tel : $rhCnt->{Tel}\n",
"Fax : $rhCnt->{Fax}\n"
;
}
my $oSoap = SOAP::Lite
-> uri('http://net.est.co.jp/jtb/')
-> proxy('http://net.est.co.jp/jtb/abroad.asmx')
-> on_action(sub{join '', @_})
;
#1. 国情報の取得
print ">>国情報\n";
foreach my $rhCode ($oSoap->EnumCountries()->valueof('//Country')) {
DspCountry($rhCode);
}
#2. 空港情報の取得
print ">>日本の空港\n";
foreach my $rhCode
($oSoap->EnumAirports(SOAP::Data->name('~:CountryCode' => 'JP'))
->valueof('//Airport')) {
DspAirport($rhCode);
}
#3. ホテル情報の取得
print ">>シアトルのホテル\n";
foreach my $rhCode
($oSoap->EnumHotels(SOAP::Data->name('~:AirportCode' => 'SEA'))
->valueof('//Hotel')) {
DspHotel($rhCode);
}
[実行結果]
>>国情報
>> COUNTRY -------------------------------------
CODE: JP
NAME: JAPAN
AREA: アジア
>> COUNTRY -------------------------------------
CODE: US
NAME: U.S.A.
AREA: 北米
>>日本の空港
>> AIRPORT -------------------------------------
CODE: NRT
NAME: NARITA INT`L
CODE: JP
CITY: NRT
>>シアトルのホテル
>> Hotel -------------------------------------
CRSCode : AP
HotelCode: 84433
CityCode : SEA
HotelName: SEATTLE DIAMOND INN
CityName : SEATTLE
Address : 695 SENECA STREET SEATTLE WASHINGTON WA 98909
Tel : XXX XXX-XXXX
Fax : XXX XXX-XXXX
>> Hotel -------------------------------------
CRSCode : AP
HotelCode: 75813
CityCode : SEA
HotelName: SEATTLE GOLD CROWN HOTEL
CityName : SEATTLE
Address : 9609 6TH AVENUE SEATTLE WA 98909
Tel : XXX XXX-XXXX
Fax : XXX XXX-XXXX
>> Hotel -------------------------------------
CRSCode : AP
HotelCode: 62488
CityCode : SEA
HotelName: SEATTLE NEO BAY SIDE HOTEL
CityName : SEATTLE
Address : 885 AURORA AVE NORTH SEATTLE WA 98909
Tel : XXX XXX-XXXX
Fax : XXX XXX XXXX
>> Hotel -------------------------------------
CRSCode : AP
HotelCode: 4833
CityCode : SEA
HotelName: SEATTLE SAPPHIRE INN
CityName : SEATTLE
Address : 86885 HIGHWAY 99 EDMONDS WA 98086
Tel : XXX XXX-XXXX
Fax : XXX XXX-XXXX
==============================================
川合 孝典 (Hippo2000)
kwitknr @ cpan.org GCD00051 @ nifty.ne.jp
http://member.nifty.ne.jp/hippo2000
http://www.hippo2000.net/
DBI日本語メーリングリスト管理人、 Kansai.pm所属
==============================================
Tokyo-pm メーリングリストの案内