문제

web2py (v1.63)와 Flex 3을 사용하고 있습니다. web2py v1.61 @service 데코레이터를 소개하여 @service.amfrpc로 컨트롤러 기능을 태그 할 수 있습니다. 그런 다음 해당 기능을 원격으로 사용하여 호출 할 수 있습니다 http://..../app/default/call/amfrpc/[function]. 보다 http://www.web2py.com/examples/default/tools#services. 이와 같은 기능을 호출하기 위해 Flex 3을 설정하는 방법의 예가 있습니까? 지금까지 시도한 내용은 다음과 같습니다.

<mx:RemoteObject id="myRemote" destination="amfrpc" source="amfrpc"
    endpoint="http://{mysite}/{myapp}/default/call/amfrpc/">
    <mx:method name="getContacts"
        result="show_results(event)"
        fault="on_fault(event)" />
</mx:RemoteObject>

내 시나리오에서 대상 및 소스 속성의 가치는 무엇입니까? 비 Web2py 구현에 관한 몇 가지 기사를 읽었습니다. http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/, 그러나 그들은 함수에 직접 맵핑하는 URI가있는 대신 .../gateway.php 파일을 사용합니다.

또는 Flash.net.netConnection을 사용하여 원격 기능을 성공적으로 호출 할 수 있었지만, 발견 한 대부분의 문서는 이것을 AMF를 수행하는 이전의 이전 3 가지 방법으로 간주합니다. 보다 http://pyamf.org/wiki/helloworld/flex. NetConnection 코드는 다음과 같습니다.

gateway = new NetConnection();
gateway.connect("http://{mysite}/{myapp}/default/call/amfrpc/");
resp = new Responder(show_results, on_fault);
gateway.call("getContacts", resp);

-로브

도움이 되었습니까?

해결책

@service.amfrpc 데코레이터와 함께 RemoteObject를 사용하는 방법을 찾지 못했습니다. 그러나 NetConnection (원래 게시 한 내용과 유사)을 사용하여 이전 ActionScript 코드를 사용할 수 있으며 Web2py 측의 @service.amfrpc 기능과 쌍을 이룰 수 있습니다. 이것은 잘 작동하는 것 같습니다. 원래 공유 한 NetConnection 코드에서 변경하려는 한 가지는 연결 상태에 대한 이벤트 리스너를 추가하는 것입니다. 필요하다고 생각되면 더 많은 청취자를 추가 할 수 있지만 NetStatuseVent가 필수임을 알았습니다. 서버가 응답하지 않으면이 상태가 해고됩니다. 연결 설정은 다음과 같습니다.

gateway = new NetConnection();
gateway.addEventListener(NetStatusEvent.NET_STATUS, gateway_status);
gateway.connect("http://127.0.0.1:8000/robs_amf/default/call/amfrpc/");
resp = new Responder(show_results, on_fault);
gateway.call("getContacts", resp);

-로브

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top