[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 メーリングリストの案内