Daha önceki yazımda genel olarak webservis nedir, hangi amaçlarla kullanılırlar onlardan bahsetmiştim. Ayrıca temel bir iki uygulamayla web servislerin nasıl oluşturulduğuna bakmıştık. Bu yazımda ise daha önce oluşturduğumuz bir web servisi, başka bir projeye nasıl çağırırız ve çağırdığımız webservis aracılığı ile verileri nasıl manupule ederiz onu göstericem. Daha öncede bahsettiğim gibi web servisler platform bağımsızdır. Hemen hemen tüm programlama dillerinde webservileri çağırıp kullanabilirirz. Ben asp.net(c#) ile hazırlanmış bir web servisi yine asp.net (c#) bir uygulamada çağırıp kullanacağım. Siz java, actionscript vb. başka herhangibir dildede çağırıp kullanabilirsiniz.
Öncelikle başka bir projeden webservisi çağırabilmemiz için, hazırladığımız web servisin erişilebilir bir yerde olması gerekir. Erişime her yerden açık olan en güzel yer tabiî ki internettir. Web servislerinize online ortama koyarak onlara url ile ulaşabilirsiniz. Ben şimdilik, visual studio’nun bize sağladığı sanal local web server ile webservisime ulaşacağım. Daha önceki yazımda bahsettiğim projeyi visual studio da açıp, “start debugging” diyerek çalıştırıyorum ve çalışır durumda bırakıyorum(web servisin local url’sini almak için). Örnek sayfa aşağadadır.
Gördüğünüz url benim webservisimin adresidir. Şimdilik bu proje bir kenarda çalışır durumda kalsın. Siz yeni bir visual studio açın ve ordanda yeni bir web Project oluşturunuz. Projeyi oluşturduktan sonra ise, “Solution Explorer” segmesinden , “references” sağ tıklayarak “add service reference” deyin( add web reference olarakta gözükebilir ). Örnek ekran aşağadadır.
Daha sonra karşınıza aşağadaki ekran gelecektir.
Bu ekranın “address” kısmına açık diğer projedeki webservisimizin url’sini yazınız ve sağ tarafındaki “Go” düğmesine tıklayınız. Karşınıza, ekranın sol tarafında gördüğünüz gibi web servisimizin adı gelecektir. Bunun üzerine tıkladığımızda, altına “myfirstwebservicesoap” gelecektir. Bunu seçtiğimizde ise ekranın sağındaki boş kutuda ise(operations) web servisimizin içne yazdığımız method isimleri gelecektir. Örnek ekran aşağadadır.
Bu ekranda ayrıca alt tarafta namespace alanı vardır. Burda projemiz içinde webservise ulaşmak için bizim verdiğimiz namespace ismi yer alır. Herhangibir isim verebilirsiniz. Her şey tamam. Şimdi OK düğmesine basınız.
Gördüğünüz gibi “solution Explorer” segmesi altındaki service referanslar altına webservisimizi referans göstermeyi başardık. Artık her şey bu webservis içindeki daha önce yazdığımız methodları kullanmaya geldi. Önceki yazımdan hatırlarsanız, webserviste “addMember “ diye bir methodumuz vardı. Şimdi bu methodla veritabanına hiçbir veritabanı işlemi yapmadan veri ekleyebiliriz.
Öncelikle kullanıcı arayüzü için bir aspx sayfası oluşturalım. Bu sayfada member eklemek için textbox lardan oluşan bir arayüz oluşturalım. Sayfanın source ve design ı aşağadadır.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="webserviscagirma._default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="3" cellspacing="3" style="background-color: Olive">
<tr>
<td>
Ad
</td>
<td>
<asp:TextBox runat="server" ID="txtAd" />
</td>
</tr>
<tr>
<td>
Soyad
</td>
<td>
<asp:TextBox runat="server" ID="txtSoyad" />
</td>
</tr>
<tr>
<td>
Email
</td>
<td>
<asp:TextBox runat="server" ID="txtEmail" />
</td>
</tr>
<tr>
<td>
Cinsiyet
</td>
<td>
<asp:TextBox runat="server" ID="txtcinsiyet" />
</td>
</tr>
<tr>
<td>
Sehir
</td>
<td>
<asp:TextBox runat="server" ID="txtSehir" />
</td>
</tr>
<tr>
<td>
Ilce
</td>
<td>
<asp:TextBox runat="server" ID="txtIlce" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button Text="Kaydet" runat="server" ID="btnSave" onclick="btnSave_Click" />
</td>
</tr>
<tr>
<td>
</td>
<td style="color:Black">
<asp:Literal ID="ltrlSonuc" runat="server"></asp:Literal>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Arayüzümüz hazır, şimdi bu ekranın kod tarafına geçip kodlamaya başlayalım.
Kaydet butonunun “click” olayı içine;
myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient webservis = new myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient();
Kod satırı ile web servis nesnemizi yaratalım. (myFirstWebServiceNameSpace=referansı eklerken verdiğimiz namespace adı).
Daha sonra yarattığımız nesnenin adını yazıp noktaya bastığımızda, web servisimizdeki tüm methodların geldiğini göreceğiz. Örnek sayfa aşağadadır.
“AddMember” methodunu seçtikten sonra, gördüğünüz gibi bu methodun aldığı parametreler bile bize gösteriliyor.
Parametre olarak textbox lardan aldığımız ilgili değerleri verdikten sonra kodun son hali aşağadaki gibi oluyor.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace webserviscagirma
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave_Click(object sender, EventArgs e)
{
myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient webservis = new myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient();
bool result = webservis.AddMember(txtAd.Text, txtSoyad.Text, txtEmail.Text, txtcinsiyet.Text, txtSehir.Text, txtIlce.Text);
if (result)
{
ltrlSonuc.Text = "Veri başarıyla kaydedildi";
}
else
{
ltrlSonuc.Text = "Kayıt sırasında bir problem oluştu";
}
}
}
}
Webservisin “addMember” methodunu hazırlarken,” return value” olarak bool bir değer vermiştik.
Şimdi projemizi çalıştıralım, arayüzden değerleri girelim ve kaydete basalım.
Projemizde herhangibir veritabanı işlemi yapmadan, web servis aracılığı ile veritabanımıza veri ekledik. Şimdi diğer methodlarıda siz deneyiniz.
Umarım faydalı olmuştur. Gelecek yazımda, şifreli web servislerden bahsetmeyi düşünüyorum.