我使用HTTPService组件来调用webservice。我在resulthandler中获得结果,但结果类型是objectProxy。我想将它们转换为我使用Data Builder of Service构建器生成的值对象。 我无法访问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;
}
答案 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。