Flex HttpService:附加到目的地
Posted
技术标签:
【中文标题】Flex HttpService:附加到目的地【英文标题】:Flex HttpService : appending to destination 【发布时间】:2010-09-13 01:51:58 【问题描述】:我正在使用 Flex 连接到 Rest 服务。例如,要访问订单 #32,我可以调用 URL http://[service]/orders/32。 URL 必须 配置为目标 - 因为客户端将连接到服务的不同实例。所有这些都使用 Blaze 代理,因为它涉及 GET、PUT、DELETE 和 POST 调用。 问题是:- 使用 HttpService 时如何将“32”附加到目的地的末尾?我所做的只是设置目的地,并在某些时候将其转换为 URL。已经跟踪了代码,但是不知道这是在哪里做的,所以无法替换。
选项有: 1. 将目的地解析为 Flex 客户端中的 URL,然后将 URL(带有附加数据)设置为 URL。 2. 编写我自己的覆盖标准代理的java Flex Adapter,并将参数映射到url,如下所示:http://[service]/order/id?id=32 到http://[service]/order/32
以前有没有人遇到过这个问题,有什么简单的方法可以解决这个问题吗?
【问题讨论】:
【参考方案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 将导致 url 为 http://localhost:8080/myapp/public/client/users/token/123
【讨论】:
【参考方案2】:这是一种通过点击事件的处理程序将 URL 解析为 Flex 中的 HTTPService 的简单方法。
这里有一项服务:
<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 添加内容...
希望有帮助!
【讨论】:
我希望能够修改在 proxy-config.xml 中配置为目标的 URL。不幸的是,除非我完成实际配置并对其进行修改,否则该 URL 对应用程序不可用以上是关于Flex HttpService:附加到目的地的主要内容,如果未能解决你的问题,请参考以下文章
如何在 flex 中使用相同的 Httpservice 获取更新的数据
在 Adobe Flex/AIR 中使用 HTTPService 对象进行 HTTP 基本身份验证