2011-09-12 10 views
1

私はCIで書かれたWebアプリケーションを拡張して、ビジュアルな基本アプリケーションと通信します。CodeIgniterを使用したSOAPサーバー

まず、私が選択したソリューションが良い選択肢であるかどうかを知りたいのですが...以前はwhith xml-rpcで作業していましたが、私にはSOAPソリューションはもっと完成しています。私が間違っている?

とにかく、最高の問題は、今私は私のコントローラ内の関数を呼び出す傾けることである...ここに私のコードです:私は、WSDLファイルをコンパイルした

class Webservice extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
    } 

    public function index() { 
     $server = new SoapServer("http://www.site.com/test.wsdl"); 
     $server->setObject($this); 
     //$server->addFunction('sayHello'); 
     $server->handle(); 
    } 

    function sayHello($name) { 
     $salute = "Hi " . $name . ", it's working!"; 
     return $salute; 
    } 

} 

、私はsite.com/呼び出した後私も$ CI = & get_inを渡して試してみた非existant機能を追加しようとしました 'のsayHello'

のSoapServer :: addFunction()[soapserver.addfunction]:Webサービス私は次のエラーを取得しますstance()を$ server-> setObject()に渡しますが、$ thisを渡すのと同じと思います。

はUPDATE - 12/09/2011

は、私はすでに全体のオブジェクト$これを設定されている場合)addFunctionを(使用する必要はありません...それを考え出しました。 SOAPはwsdlファイルで宣言された関数だけを呼び出しますが、とにかく私はprivete/protectedとして機能を設定できないようです。

私はSOAPを先に進んでいないと言われています... tutorial written by Phil Sturgeonは、さまざまな応答タイプ(json、xml、serialize、csv)を返すRESTアプローチを使用して良い解決策を示しています。

答えて

6

詳細完了?どうして?

SOAPははるかに定義された型付きの転送プロトコルですが、データを送信するだけでは複雑です。 WSDLは私には不要な複雑さの層です。これはクライアントとサーバにデータの種類を伝えるために使われますが、PHPは型について気にしません。なぜこれを使うのですか?

RESTとJSONあなたはNuSOAPクラスを使用する場合は、WSDLは問題ではありません=迅速かつ簡単に
SOAPやXML =遅く、非常に醜い

+0

感謝をしてみてください!だから、私はこのプロトコルはPHPのために必要ではないことを理解しますが、VBのアプリケーションについてはどうですか?私は、私のアプリケーションとのインターフェースを必要とする開発者の方が楽しくなりたいと思っています。多くのVB開発者がSOAPに精通していることは知っています。 JSONをVBで簡単に解析できますか? – Luciano

+1

誰でも知っているかもしれませんが、可能です:http://jayrock.berlios.de/ –

1

http://yoururl/api?wsdl 

のようにサーバーを呼び出すだけで、NuSOAPによってWSDLが生成されます。私はNuSOAPによって開発されたSOAPサービスをいくつか用意しています。 SOAPをサポートしています。

Good Luck!

0

お返事のために、この

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

ini_set("soap.wsdl_cache_enabled", "0"); 
$srv = new SoapServer("http://www.example.com/test.wsdl"); 
$srv->setClass('Webservice'); 
$srv-> addFunction(SOAP_FUNCTIONS_ALL); 
$srv->handle(); 


class Webservice extends CI_Controller { 

function __construct() { 
    parent::__construct(); 
} 

public function index() { 
} 

function sayHello($name) { 
    $salute = "Hi " . $name . ", it's working!"; 
    return $salute; 
} 

} 
+1

このコードは質問に答えるかもしれませんが、なぜこのコードが質問に答えたのか、および/またはどのようにして、 –

関連する問題