2010-11-22 9 views
0

PHPと通信するFlexアプリケーションで実行時にエンドポイントURLを変更/指定するにはどうすればよいですか? 私は今までは常にservices-config.xmlを使用していました。Flex/PHP:services-config.xmlのない動的エンドポイントURL

mxmlリモートオブジェクトのエンドポイントを上書きしようとしましたが、成功しませんでした。

リモートオブジェクトに新しいチャネルセットを追加しようとしましたが、何らかの理由で宛先を定義する必要がありました。

大変助けになりました。

マーティン

答えて

1

私は同じ問題に苦しんで、ここで私の闘争から生まれたものだし、あなたが見ることができるように)

public static function getRemoteObject(destination:String, channelName:String, 
    showBusyCursor:Boolean=true):RemoteObject{ 
    var remoteService:RemoteObject=new RemoteObject(destination); 
    var channelSet:ChannelSet=new ChannelSet(); 
    var amf:AMFChannel=new AMFChannel(channelName, 
     "http://{server.name}:{server.port}" + 
     (Application.application as Application).parameters.contextRoot + 
     "/graniteamf/amf"); 
    channelSet.addChannel(amf); 
    remoteService.channelSet=channelSet; 
    remoteService.showBusyCursor=showBusyCursor; 
    return remoteService; 
} 

、私は基本的にあなたが試したと述べただけで物事を行います私のエンドポイントはアプリケーション起動時にflashVarsに部分的に提供されています。

+0

thxです。私は宛先文字列に問題があります。あなたはどうしたの?私はservices-config.xmlを持っていないので、常にエラーが出ます。メッセージングの宛先は見つかりませんでした。 目的地はどこですか? (このRemoteObjectをどのように呼び出すか)、そしてソース(リモートクラス)をどこで設定しますか? – Martin

+0

さて、私は今混乱していることを認めなければなりません。私はあなたがコンパイル時にservice-config.xmlを使いたくないと思っていましたが、あなたはそれをまったく使いたくないと思っていますし、サーバでそれを持っていない可能性もありますか側。 – 2DH

+0

- 私はZendAMFとPHPを使用していますので、service-config.xmlファイルを使用しても構いません。しかしこれまでのところ私はそれをFlex Appにコンパイルしていました。サーバーにはありませんでした。このアプローチでは、サーバーに配置する必要がありますか?私はそれをどのように/どこに置くのですか? – Martin

0

これは、私はそれが仕事を得ることができる唯一の方法でありますまた

import com.adobe.fiber.core.model_internal; 

:AMFPHPとして

/** 
* Override super.init() to provide any initialization customization if needed. 
*/ 
protected override function preInitializeService():void 
{   
    _needWSDLLoad = false; // to prevent loading the default WSDL 
    super.preInitializeService(); 
    // Initialization customization goes here 
    wsdl = "http://localhost/yourservice?wsdl"; 
    _needWSDLLoad = true; 
    model_internal::loadWSDLIfNecessary(); 
0

ような単純なあなたのサービスのために生成されたスタブでスタイル:

gateway = new NetConnection(); 
    gateway.connect("http://localhost/ZServer/"); 
    gateway.call("MyService.getData", new Responder(getLoan, onFault)); 

    public function getLoan(result:Array):void { 
       dpDataRaw = new ArrayCollection(result); 
      }    
関連する問題