2011-07-07 1 views
0

私はgSOAP Calculator Serviceの例を作成しました:http://www.genivia.com/Products/gsoap/demos/index.htmlgSoapとC++を使用して作成したWebサービスにPHPを適用するにはどうすればよいですか?

自分のWebサービスを自分のSolarisボックスでdeamonとして実行しています。

今、私はこの新しいWebサービスにヒットするためにPHPページを使用しようとしています。私はhttp://www.php.net/manual/en/class.soapclient.phpを見ていて、例を見出そうとしましたが、運がなかった。誰かがこれをする例を教えてくれますか?または私にそれを行うためのコードを表示する?

私は2日間ウェブサイトを見て、さまざまなことを試していて、自分のプロジェクトで時間を使い果たしています。手伝ってくれてどうもありがとう。

はFYI:私は私のapacheサーバはポート7000

<?php 

function customError($errno, $errstr) 
{ 
    echo "<b>Error: </b> [$errno] $errstr"; 
} 

set_error_handler("customError"); 

define("SOAP_ENCODED", 1); 
define("SOAP_RPC", 1); 

$options = array(
'compression'=>true, 
'exceptions'=>false, 
'trace'=>true, 
'use' => SOAP_ENCODED, 
'style'=> SOAP_RPC, 
'location'=> "http://localhost:7000", 
'uri' => "urn:calc" 
); 

echo "1"; 

$client = @new SoapClient(null, $options); 

echo "2"; 

$args = array(2, 3); 

$ret = $client->__soapCall("add", $args); 

echo "3"; 

if (is_soap_fault($ret)) 
{ 
    echo 'fault : '; 
    var_dump($client->__getLastRequest()); 
    var_dump($client->__getLastRequestHeaders()); 

} 
else 
{ 
echo 'success : '; 
    print '__'.$ret.'__'; 
} 

$client->ns__allAllowed(); 
?> 

すべてのエラーを返さないWebページに設定されています。

CalcのWebサービスがWSDLを生成することを書かれて、あなたが言及したチュートリアルでマイケル

+1

あなたが試したコードを投稿してください。そしてあなたがそれを実行するときに得ているエラー。 – Cfreak

+0

投稿の編集が終了しました。 – TheBigOnion

+0

これをスクリプトの先頭に置く: 'error_reporting(-1);' '@'ここで '$ client = @new SoapClient(null、$ options);'を削除し、ページを再試行してエラーです。また、何かがエコーしている? –

答えて

0

。 WSDLは、Webサービスのすべてのメソッドとタイプを記述するファイルです。あなたがPHPでSOAPクライアントを作成することができますこれを踏まえて:

$client = new SoapClient('http://www.mysite.com/calc.wsdl', 
          array('trace' => true, 'exceptions' => true)); 

次に、Webサービスによって提供される任意のメソッドを呼び出すことができます。

try { 
    $client = new SoapClient('http://www.mysite.com/calc.wsdl', 
          array('trace' => true, 'exceptions' => true)); 

    $result = $client->methodName($param1, $param2); 
} catch (SoapFault $e) { 
    var_dump($e); 
} 

var_dump($result); 

いくつかのエラーは、あなたが試しにそれをキャッチしますが発生する場合は/キャッチブロック。スクリプトの先頭に

+0

私はそれを試みましたが、まだ空白のページがあります。私は "ソケット接続..."情報を吐き出すターミナルで私のcalcアプリケーションを見ることができます。私がcgiスクリプトのようにコマンドラインからcalcを実行すると、正常に動作します。 – TheBigOnion

+0

tryとcatchの前後に 'echo'が追加されている場合、このページの他の出力は?そうでなければ、PHPで問題があるようです。SOAP拡張はlibxmlとcurl拡張でコンパイルする必要があり、それらを有効にする必要があります。 HTTPS接続を使用する場合は、OpenSSLも必要です。このlibsとSOAP Extensionのphpinfo()を確認してください(有効になっている場合はSOAPセクションが表示されるはずです)。 – WASD42

+0

私がphpinfoを実行するときに見るのは、 "Configure Command"というセクションにあり、そのコマンドの最後に "--enable-soap-shared"と表示されます。これは正しいですか?どうすればいいですか? – TheBigOnion

1

error_reporting(E_ALL); 
ini_set('display_errors', true); 
ini_set('display_startup_errors', true); 

チェックするためにいくつかの点:

  • がUnicode署名(BOM)が?>後、あなたのエディタでオフ
  • ありませんホワイトスペースです含めます(削除するだけです)
  • cliでスクリプトを実行しますphp /path/myscript.php
関連する問題