[PHP-users 9741] Re: SOAPによる実装

Naoki Shima php-users@php.gr.jp
Wed, 4 Sep 2002 18:26:43 +0900


はじめまして、嶋と申します。

必要なのはSOAPのクライアントの書き方ですね。
であれば以下のスクリプトでうまくいくと思います。
それと、SOAPはパッケージがでていますので、
# pear install SOAP
でインストール可能ですよ。

<?php
// SOAPクライアントクラスが記述されたファイルをロードします。
require_once 'SOAP/Client.php';

// SOAPサーバーのスクリプト
$uri = 'http://http://192.168.7.148/cgi-bin/random.cgi';

// SOAPクライアントをインスタンス化(オブジェクトを作る)します。
$obj = new SOAP_Client($uri);

// SOAPサーバーのchoose()メソッド引数なしで呼びます。
$result =$obj->call('choose',array(),'http://192.168.7.148/Random');

// SOAPによって返された結果を表示する。
echo '<pre>';
var_dump($result);
echo '</pre>';
?>


PEAR SOAPはデフォルトで4秒(確か)でsocketタイムアウト
するようになっているので、
注意が必要です。これをかえるには以下のようにします。
//これでタイムアウトが20秒になります。
$result =$obj->call('choose',array(),array('namespace' => 
'http://192.168.7.148/Random','timeout' => 20));

--
嶋 直毅 
naoki@avantexchange.com
murahachibu@php.net

On 2002.09.03, at 15:45, Shinji Hotta wrote:

> はじめまして、堀田です。
> 初めてメーリングリストに質問させていただきます。
>
> 今回、Perlで書いてあるプログラムをPHPからアクセスするためにSOAPを用いて
> 実装
> しようとしました。
> まず、SOAPをインストールしようとして、CVSによりPEAR開発版を入手
> しようとし
> た。
>
> $ cvs -d:pserver:cvsread@cvs.php.net:/repository login
> [phpfi]と入力
> $ cvs -d:pserver:cvsread@cvs.php.net:/repository -z4 co pear
>
> ネットから調べたとおりに、上記のコマンド通りに打ったのですが、phpfiと
> 入力し
> た時点で、
>
> cvs login: failed to open /root/ .cvspass for reading: No such file or
> directory
> cvs [login aborted]:fator error:exiting
>
> というエラーが出てうまくいきませんでした。
>
> 他にも、PHPSOAPというライブラリを使って実装しようとしたのですが、使い方
> がよ
> く分かりませんでした。
>
> そこで、PHPからSOAPを用いて、他の言語(例えば、Perl)で書いたプログラム
> を利
> 用する方法を教えてください。
>
> Perl同士では、うまくいったので、参考として載せておきます。
>
> サーバ側のプログラムrandam.cgi    (これを、Apacheのcgi-binフォルダに入
> れて
> おく。)
> #!/usr/bin/perl -w
> use SOAP::Transport::HTTP;
> SOAP::Transport::HTTP::CGI
>    ->dispatch_to('Random')
>    ->handle;
> package Random;
>    sub choose {
>          $random = int(rand(9))+1;
>    return $random;
>    }
>
> クライアント側のプログラムtest_client.pl
> #!/usr/bin/perl -w
> use SOAP::Lite;
> print SOAP::Lite
>    -> uri('http://192.168.7.148/Random')        <=これは、名前空間
> なのであま
> り関係ない
>    -> proxy('http://192.168.7.148/cgi-bin/random.cgi')
>    -> choose()
>    -> result;
>
> これを実行すると、1から10までの数字がランダムに返ってくる。
>
> この例では、Perl同士の実装なんですが、これをPerl−PHPで実装
> できるようにした
> いので、
> よろしくお願いします。
>
> ----------------------------------------
> 堀田(address:tj0012@mail4.doshisha.ac.jp)
> ----------------------------------------------
>
>
>
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
>
>