#ref(http://www.xmethods.net/images/logo_small.gif,around,right,nolink);
 [[XMethods:http://www.xmethods.com/]]は、組み込みパーツとして使えるWebサービスを無償提供してくれています。例として、[[為替情報Webサービス:http://www.xmethods.com/ve2/ViewListing.po;jsessionid=AG5BnrZ5gdcUihPAV_0j6HY2(QHyMHiRM)?key=uuid:D784C184-99B2-DA25-ED45-3665D11A12E5]]を利用してみることにしました。簡単ですね。

*** 為替情報取得クライアント(PHP) [#g0ef73f4]
  サンプルソース1
 <?php
   require_once('SOAP/Client.php');
   $soapclient = new SOAP_Client(
     'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
     true);
   $params = array('country1' => 'new Zealand', 'country2' => 'japan');
   $Result = $soapclient->call('getRate', $params);
   echo "1NZ$ = " . $Result . "円";
 ?>
-PEARのSOAPライブラリを使っています。
-私の[[blog:http://jomora.bne.jp/wp/]]の右上にちょこっと載っけました。

 で、上のサンプルだとページリクエスト毎にWebサービスを呼び出しちゃうわけですが、そうすると遅いし、Publicサーバにも負荷がかかっちゃうということで、1時間毎に更新するように変更。

  サンプルソース2
 <?php
   require_once('SOAP/Client.php');
   $fp = @fopen("exchangeNZD.dat","r+");
   $data = split(",", fgets($fp));
   $lastupdatetime = $data[0];
   $Result = $data[1];
 
   if ($Result == null || $lastupdatetime == null
       || (time() - $lastupdatetime) > 3600) {
     $soapclient = new SOAP_Client(
       'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
       true);
     $params = array('country1' => 'new Zealand', 'country2' => 'japan');
     $Result = $soapclient->call('getRate', $params);
 
     rewind($fp);
     flock($fp, LOCK_EX);
     fputs($fp, time() . ',' . $Result);
   }
   fclose($fp);
   echo $Result . "円 = 1NZ$";
 ?>

 なんかこないだ、XMethodsがサイトごとDownしてたんですよ。そうしたときに、このPHPコードを貼り付けていたページも表示がおかしくなっちゃって…。タイムアウトを設定しないといけないみたいですね。

  サンプルソース3(抜粋)
 $soapclient = new SOAP_Client(
   'http://jomora.bne.jp:8080/Quiz/QuizService.asmx?wsdl',
   false,
   false,
   array('timeout' => 2));
   'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
   false, false, array('timeout' => 2));
-'timeout'連想配列の数字は、タイムアウトの秒数です。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS