웹 서비스 기반 데이터 접근(하)Flex 와.NET 상호작용(3)
8988 단어 flexWebService데이터 액세스
1 internal function onClick():void2 {3 var service:WebService = new WebService();4 service.loadWSDL("http://localhost:1146/FlashFlexService.asmx?wsdl");5 service.addEventListener(ResultEvent.RESULT,onResult);6 service.addEventListener(FaultEvent.FAULT,onFault);7 service.GetBook();8 }
클래스 대상 의 loadWSDL()방법 을 통 해 원 격 WebService 를 직접 호출 하고,동적 으로 클래스 대상 에 관련 된 처리 함 수 를 지정 한 다음 탭 과 같이 원 격 WebService 방법 을 호출 할 수 있 습 니 다.
1 internal function onResult(evt:ResultEvent):void2 {3 Alert.show(evt.result.Id);4 }5 6 internal function onFault(evt:FaultEvent):void7 {8 Alert.show(evt.fault.faultDetail.toString());9 }
위 와 같이 WebService 류 를 사용 하여 원 격 WebService 방법 에 프로 그래 밍 을 통 해 접근 하 는 호출 이 완료 되 었 습 니 다.
웹 서비스 가 DataTable 등 담당 유형 으로 돌아 가 Flex 클 라 이언 트 에서 어떻게 해석 해 야 하 는 지 살 펴 보 자.먼저 WebService 방법 을 다음 과 같이 정의 합 니 다.
1 [WebMethod(Description="이 방법 은 DataTable 형식의 데 이 터 를 되 돌려 줍 니 다")] 2 public DataTable GetDataTable() 3 { 4 DataTable dt = new DataTable("Books"); 5 dt.Columns.Add("Id", typeof(int)); 6 dt.Columns.Add("Name", typeof(string)); 7 dt.Columns.Add("Author", typeof(string)); 8 dt.Columns.Add("Price", typeof(double)); 9 10 DataRow dr = dt.NewRow();11 dr["Id"] = 1;12 dr["Name"] = "《"Flex 게임 개발";13 dr["Author"] = "장삼14 dr["Price"] = 54.85;15 dt.Rows.Add(dr);16 17 dr = dt.NewRow();18 dr["Id"] = 2;19 dr["Name"] = "《플래시 게임 개발>20 dr["Author"] = "이사21 dr["Price"] = 65.50;22 dt.Rows.Add(dr);23 24 return dt;25 }
마찬가지 로 Flex 클 라 이언 트 에서 WebService 를 통 해 접근 하면 됩 니 다.다음은
1
웹 서 비 스 를 제 공 했 고 클 라 이언 트 도 웹 서비스 에 연결 되 었 습 니 다.이 제 는 웹 서비스 가 제공 하 는 원 격 방법 만 호출 할 수 있 습 니 다.다음 과 같다.
1 internal function onTable():void 2 { 3 myService.addEventListener(ResultEvent.RESULT,onSuccess); 4 myService.addEventListener(FaultEvent.FAULT,onFault); 5 myService.GetDataTable.send(); 6 } 7 8 internal function onSuccess(evt:ResultEvent):void 9 {10 //bookGrid.dataProvider=this.myService.GetDataTable.lastResult.Tables.Books.Rows;11 }12 13 internal function onFault(evt:FaultEvent):void14 {15 Alert.show("WebService 호출 방법 이 실 패 했 습 니 다.자세 한 내용:" + evt.fault.faultDetail.toString());16 17 }
WebService 의 반환 값 을 Flex 의 DataGrid 구성 요소 에 연결 합 니 다.mxml 의 관련 코드 는 다음 과 같 습 니 다.
1
DataGrid 의 dataProvider 속성 을 통 해 DataGrid 구성 요소 의 데이터 원본 을 연결 합 니 다."{}"바 인 딩 표현 식 을 통 해 정 해진 것 외 에 도 원 격 방법 으로 성공 적 인 처리 함수 에서 DataGrid 에 데이터 원본 을 지정 할 수 있 습 니 다.위 코드 에 설명 되 어 있 는 코드 부분 을 보십시오.{this.my Service.GetDataTable.lastResult.Tables.Books.Rows}은 원 격 웹 서비스 방법 GetDataTable()의 반환 결과(DataTable)의 모든 줄 을 데이터 원본 으로 DataGrid 구성 요소 와 연결 하 겠 다 고 밝 혔 습 니 다.그 중에서 Books 는 데이터 원본 DataTable 의 name 입 니 다.앞의 WebService 방법 에 대한 정 의 를 참조 하 십시오.프로그램 실행 결 과 는 다음 그림 과 같 습 니 다:
DataSet,DataTable 은 범 형 집합 에 비해 성능 에 큰 차이 가 있 고 복잡 한 직렬 화 와 반 직렬 화 과정 도 책임 이 있 습 니 다.net 2.0 이 범 형 을 출시 한 후부 터 지금까지 저 는 범 형 으로 빅 데 이 터 를 전달 하 는 것 을 좋아 해 왔 습 니 다.OK,다음은 Flex 에서 WebService 방법 으로 되 돌아 오 는 일반적인 집합 데 이 터 를 어떻게 처리 하 는 지 소개 하 겠 습 니 다.저 희 는 다음 과 같은 WebService 방법 으로 정의 합 니 다.
1 [WebMethod(Description="이 방법 은 범용 집합 으로 되 돌아 갑 니 다")] 2 public List
DataSet,DataTable 형식 보다 List<>를 사용 하여 데 이 터 를 되 돌려 주 는 것 이 개인 적 으로 더 쉽다 고 생각 합 니 다.저 희 는 WebService 의 디 버 깅 환경 에서 List<>로 돌아 가 는 WebService 방법 을 직접 테스트 하면 다음 과 같은 결 과 를 볼 수 있 습 니 다.
이것 이 바로 범용 결합(List<>)형식 으로 되 돌아 오 는 데이터 형식 으로 DataTable 의 되 돌아 오 는 결과 보다 더욱 간결 하고 명료 하 다.그 나 저 나 Flex 에서 이 반환 값 을 어떻게 가 져 오고 처리 해 야 합 니까?사실 여 기 는 우리 가 어떤 방식 으로 처리 할 수 있 는 지 잘 보 여 주 었 습 니 다.위의 그림 을 자세히 보면'Array OFBook'을 발견 할 수 있 습 니까???이것 은 무엇 입 니까?클 라 이언 트 가 배열 의 형식 으로 이 반환 값 을 얻 을 수 있 는 것 이 아 닐 까?이 안의 작은 부분 을 더 잘 알 기 위해 우 리 는 내부 에 깊이 들 어가 반환 값 의 구체 적 인 구 조 를 알 아야 한다.Flex Builder 의 디 버 깅 환경 을 통 해 다음 과 같은 정 보 를 얻 을 수 있다.
잘 보이 시 나 요?BookList 방법의 lastResult 구조 집합 아래 두 개의 대상 이 있 습 니 다.노드 를 누 르 면 우리 가 List
1 internal function onTable():void 2 { 3 myService.addEventListener(ResultEvent.RESULT,onSuccess); 4 myService.addEventListener(FaultEvent.FAULT,onFault); 5 myService.BookList.send(); 6 } 7 8 internal function onSuccess(evt:ResultEvent):void 9 {10 var arrC:ArrayCollection = this.myService.BookList.lastResult as ArrayCollection;11 bookGrid.dataProvider=arrC;12 }13 14 internal function onFault(evt:FaultEvent):void15 {16 Alert.show("WebService 호출 방법 이 실 패 했 습 니 다.자세 한 내용:" + evt.fault.faultDetail.toString());17 18 }
대응 하 는 mxml 코드 는 다음 과 같 습 니 다(실행 결 과 는 위 에서 DataTable 형식 으로 되 돌아 가 는 것 과 같 습 니 다).
1
웹 서비스 에 관 한 데이터 방문 은 여기까지 입 니 다.개인 능력 에 한계 가 있 기 때문에 글 에 부족 한 점 이 있 으 면 지적 해 주 십시오.만약 무슨 좋 은 건의 가 있 으 면 제기 할 수 있 습 니 다.여러분 은 서로 토론 하고 공부 하 며 함께 발전 할 수 있 습 니 다!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
flex는 웹 서비스를 이용하여 사진을 업로드하여 코드를 실현한다WebService 엔드 코드 Flex 클라이언트 코드...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.