18 Mart 2009 Çarşamba

Flex - Webservice

Merhaba arkadaşlar,
Flexle webservice arasındaki bağlantıyı sağlamak yapmanız gerekenleri anlatmaya çalışacağım.

Flex aplikasyonumuzu normal şekilde yaratıyoruz. Web service bağlantısını gerçekleştirmek için aşağıdaki kodu yazıyoruz.

//Öncelikle webservici yaratıyoruz.

<
mx:webservice id="ws" wsdl="http://localhost:1985/WebService.asmx?WSDL" fault="Alert.show('HATA')">



//web service yaratırken en önemli noktalardan biri wsdl adresimizi doğru şekilde göstermemiz gerekmekdedir. yukarıdaki wsdl benim örneğimde asp.net webservice e linkdir. Id webservicin flex kodundaki id si olacaktır her değer yazılabilir. fault herhangi bir nedenden dolayı web service bağlantısının sağlanamama durumunda çağrılacaktır. Burada Alert gösterebilir yada bir fonksiyon yazıp onu çağırabilirsiniz.
Web service yazdıkdan sonra içine client tarafından çağırmak adına fonksyionlar yazacaksınız. Bu fonksiyonların flexde çağrılması için mx:operation kullanılır.


<
mx:operation name="UserGet" result="{HandleUser(event)}" fault="ResultError()">


//yukarıda ulaşmak istediğimiz fonksiyonun adı "UserGet" bu isim webservicedeki fonksiyon ismiyle aynı olmalıdır. result da fonksiyonun return ettiği değerlere ulaşacağız. HandleUser fonksiyonumuz veriler düzgün şekilde gelirse çağırılacaktır. eğer bir sorun olursa Fault işleme girer. deki fault ile burdaki arasındaki en temel fark 1. de webservicele olan baglantı hataları 2. de ise webservice içindeki fonksiyona yonelik hatalar gelir. 1. de hata olursa zaten fonksiyon çağrılmayacaktır.

Aşağıda fonksiyonumuza nasıl değişken yollayabileceğimizi göreceğiz.


<

mx:request
>

<
userid
>
{MyText} < /userid>

<
/mx:request>


// requesti açtıkdan sonra içeride istediğimiz kadar (fonksiyonun yaratılmasında belirtilmiş sayı kadar) değişken yollamamız gerekmekdedir. Eksik olması durumunda hata oluşabilir. Bu örnekde fonksiyon içinde sadece bir adet değişken almakdadır ve bu değişkenin adı "UserId" dir. Bu isimde webservice de ki isimde aynı olmak zorundadır. MyText herhangibir flexde tanıtılmış değişkendir. Int,string,boolean,vs.. olabilir.

operasyonu ve webservici aşağıda kapatıyoruz.

<
/mx:operation>

<
/mx:webservice>


//Evet yukarıda webservice'imizi yazdık. Önce ona nasıl ulaştıp verilerimizi çekeceğimizi öğreneceğiz.
Kodumuzda bir butonun click eventinde veya bir fonksiyon içinde webservicimizi cagırabiliriz. temel olarak yapmamız gereken webserviceid.operationid.send(); komutunu çalıştırmakdır. bizim örneğimiz için bakacak olursak,

ws.UserGet.send();

//olmalıdır.

şimdi bu verilerimizi yakalamamız, göstermemiz ve işlemler yapmamız gerekmekde. Yukarıdaki örneğe tekrar bakacak olursak mx:operation da result çağrıldığında da "HandleUser()" fonksiyonumuz çağrılacaktır. Şimdi flex içinde bu fonksiyonumuza göz atalım.

Öncelikle tüm fonksiyonlar flexde "mx script" içinde yazılmak zorundadır.


//Hata mesajı göstermek için alert ve webserviceden sonuçları almak için ResultEvent i import ediyoruz.

import mx.controls.Alert;
import mx.rpc.events.ResultEvent;

//Hata olması durumunda aşağıdaki fonksiyonumuz çağrılacak ve HATa mesajı basılacaktır.

public function ResultError():void
{
Alert.show("HATA");
}

//Verilerimizi çekmek için eğer webservice bağlantımızda bir sorun oluşmaz ve tüm verilerimiz gelirse, aşağıdaki fonksiyonumuz çağrılacaktır. Webservice fonksiyonumuzda fonksiyonun bir string dondurdugunu düşünürsek eğer.

public function HandleUser(res:ResultEvent):void
{
//isim degiskeni yaratıyoruz

var isim:String;

//Değişkenleri

isim = ws.QuestionResult.lastResult;

//veya

isim = res.lastResult;

//şeklinde alabiliriz üstteki iki satırda aynı işleri yapacaktır.
}

Yukarıda webservice bağlantısını ve kısaca verilerimizi nasıl cekeceğimizi göstermeye çalıştım. Umarım yardımcı olabilmişimdir. Lütfen sormak istediklerinizi ve yorumlarınızı aşağıdan ekleyiniz.
İyi çalışmalar

Hiç yorum yok:

Yorum Gönder