0

Flex を使用して Rest サービスに接続しています。たとえば、注文番号 32 にアクセスするには、URL http://[service]/orders/32を呼び出します。クライアントはサービスのさまざまなインスタンスに接続するため、URLを宛先として構成する必要があります。これにはすべて、GET、PUT、DELETE、および POST 呼び出しが含まれるため、Blaze Proxy を使用しています。問題は次のとおりです:- HttpService を使用する場合、宛先の末尾に「32」を追加するにはどうすればよいですか? 宛先を設定するだけで、ある時点でこれが URL に変換されます。コードをトレースしましたが、これがどこで行われているかがわからないため、置き換えることはできません。

オプションは次のとおりです。 1. Flex クライアント内で宛先を URL に解決し、その URL を (データが追加された状態で) URL として設定します。2. 標準プロキシをオーバーライドする独自の Java Flex アダプタを作成し、次のようにパラメータを URL にマップします。http://[service]/order/ {id}?id=32 to http://[service]/オーダー/32

以前にこの問題に遭遇した人はいますか?これを解決する簡単な方法はありますか?

4

2 に答える 2

1

誰もが知っているように、これが私がこの問題を解決した方法です:

サーバー上にカスタム HTTPProxyAdapter を作成しました

public MyHTTPProxyAdapter extends flex.messaging.services.http.HTTPProxyAdapter {

public Object invoke(Message message) {
    // modify the message - if required
    process(message);
    return super.invoke(message);
}

private void process(Message message) {
        HTTPMessage http = (HTTPMessage)message;
        if(http != null) {
            String url = http.getUrl();
            ASObject o = (ASObject)http.getBody();
            if(o != null) {
                Set keys = o.keySet();
                Iterator it = keys.iterator();
                while(it.hasNext()) {
                    String key = (String)it.next();
                    String token = "[" + key +"]";
                    if(url.contains(token)) {
                        url = url.replace(token, o.get(key).toString());
                        o.remove(key);
                    }

                }
                http.setUrl(url);
            }
        }
    }
}

次に、宛先アダプターを私のアダプターに交換しました。config.xml で次の URL を使用できるようになりました。角括弧内はすべてクエリ文字列に置き換えられます。

<destination id="user-getbytoken">
        <properties>
            <url>http://localhost:8080/myapp/public/client/users/token/[id]</url>
        </properties>
</destination>

この例では、宛先を user-getbytoken に設定し、パラメーター {id:123} を設定すると、http://localhost:8080/myapp/public/client/users/token/123の URL になります。

于 2008-09-26T15:35:56.220 に答える
0

クリックイベントのハンドラーを介してFlex内のHTTPServiceへのURLを解決する簡単な方法を次に示します。

ここにサービスがあります:

<mx:HTTPService
    id="UCService"
    result="UCServiceHandler(event)" 
    showBusyCursor="true"
    resultFormat="e4x"
    />

次に、ハンドラーは次のとおりです。

        private function UCmainHandler(UCurl:String) {

            UCService.url = UCurl;
            UCService.send();

        }

そして、これがクリックイベントのサンプルです:

<mx:Button label="add to cart" click="UCmainHandler('http://sampleurl.com/cart/add/p18_q1?destination=cart')" />

もちろん、クリックハンドラーに他の値を渡すことも、ハンドラーに他の現在の設定などに基づいてURLに追加させることもできます...

お役に立てば幸いです。

于 2008-09-25T16:11:18.697 に答える