如何将HTTPService返回的objectProxy映射到valueobjects

时间:2011-06-21 10:53:13

标签: flex actionscript air httpservice

我使用HTTPService组件来调用webservice。我在resulthandler中获得结果,但结果类型是objectProxy。我想将它们转换为我使用Data Builder of Service构建器生成的值对象。 enter image description here 我无法访问ConnectUserAccess(如附图中所示)作为值对象。

var hs:HTTPService = new HTTPService();
var url:String = ConfigManager.getProperty("user.project.acess");
 hs.method = "GET";
 hs.url = url;
 hs.resultFormat = "object";
 var params:Object = {};
 params["User_Name"] = "madhur";
 hs.addEventListener(ResultEvent.RESULT, getProjectsAccessHandler);
 hs.addEventListener(FaultEvent.FAULT, getProjectFaultHandler);
 hs.send(params);

private function getProjectsAccessHandler(event:ResultEvent):void{
 var connect:ConnectUserAccess = event.result.ConnectUserAccess;
}

2 个答案:

答案 0 :(得分:2)

您必须进行手动转换。只有RemoteObject(AKA AMF)会自动将服务器端对象转换为ActionScript对象。使用HTTPService不会进行转换。

您应该能够像这样进行手动“演员”:

private function getProjectsAccessHandler(event:ResultEvent):void{
 var connect:ConnectUserAccess = event.result.ConnectUserAccess as ConnectUserAccess;
}

答案 1 :(得分:0)

我终于成功了。我正在做的错误是创建HTTPservice对象,即使我使用flash builder的数据/服务功能生成了服务类。 我只需要使用生成的服务类来调用Httpservice。现在我想要的是从服务中恢复事件。生成的服务返回mx.rpc.AsyncToken,我可以使用callResponder.token来使用它。请参阅下面的代码以获得更清晰的信息。

import services.release.Release;
[Bindable]
private var userCR:CallResponder;
[Bindable]
private var release :Release;
private function init():void{
userCR = new CallResponder;
userCR.addEventListener(ResultEvent.RESULT, getUserProject);
userCR.addEventListener(FaultEvent.FAULT,getUserProjectFaultHandler);
release = new Release;
}
protected function userProjectAccess(User_Name:String, User_GUID:String):void
{
userCR.token = Release.UserProjectAccess(User_Name, User_GUID);
}

在需要的地方调用此函数userProjectAccess。