2009-02-04 4 views
1

내 메인 mxml 파일에서 actionscript 클래스를 호출합니다. actionscript 클래스는 웹 서비스를 호출하고 응답을 처리하는 책임이 있지만, 문제가 생기고 다음과 같은 오류가 계속 발생합니다. (메신저 플렉스 btw)웹 서비스 코드 in actionscript

Error #1009: Cannot access a property or method of a null object reference. 

내 코드는 다음과 같습니다.

public function getSites(argWsdl:String):void{ 
    ws = new WebService(); 
     ws.loadWSDL(argWsdl); 
    ws.getSites.addEventListener(ResultEvent.RESULT,echoResultHandler); 
    ws.getSites(); 
} 

    public function echoResultHandler(event:ResultEvent):void { 
     var siteField:ArrayCollection = event.result as ArrayCollection; 
     Application.application.setSiteField(siteField); 
    } 

디버거를 실행하면 코드가 결과 hanlder에 도달하지 않고 변수 목록에 # 1009 오류가 표시됩니다.

어떤 아이디어가 있습니까?

답변

1

당신이 정렬 한 것처럼 보입니다.하지만 누군가 다른 사람이 따라 오는 경우 더 많은 정보를 추가하기 만하면됩니다. 질문을하면, 아직 작성되지 않은 것을 사용하려고 할 때 일반적으로이 오류가 표시됩니다. 아직 생성되지 않은 UI 구성 요소에 액세스하려고 할 때 많은 시간을 보게 될 것입니다 (이러한 종류의 creationComplete 이벤트에 의존하는 것이 좋음). 그러나이 경우에는 이전에 webservice를 사용하고있는 것처럼 보입니다 그것은 완전히 준비되었습니다 (wsdl은 아직로드되지 않았습니다).

mxml (mx : webservice)에서 웹 서비스를 정의하고 거기에 wsdl을 지정하거나 나중에 ID를 참조하여 나중에 구성 파일에서 wsdl을로드 할 수도 있습니다.

0

정렬하려면로드 이벤트 및로드 핸들러를 만들어야합니다.

일단 loadWsdl이 호출되면 loadhandler는 loadHandler 내에서 사용할 laodHandler를 지정합니다. wsdl에 표시된 메소드 이름을 호출합니다.

0

감사 라이언,

그래서 내가 동일한 코드를 다시 입력 할 필요없이 내 구성 요소에 동일한 웹 서비스 호출을 재사용 할 수있는 별도의 액션 스크립트 클래스를 사용하는 주된 이유 임. 나는 이것을 할 수있는 더 좋은 방법을 생각할 수 없었다. 아마도 사용자 정의 구성 요소를 사용하여 동일한 작업을 수행 할 수 있었을 것이다.

+0

아니, 좋은 방법 같아. 이미 알아 차린 것처럼, 전화를 걸기 전에 모든 것이 만들어지고 준비가되었는지 확인하고 확인하십시오. 별도의 클래스 생성자에서 wsdl을로드 할 수도 있습니다. –