Setelah menambahkan referensi web dari web services maka saatnya melakukan pengikatan hasil pemanggilan web services. Konsep pengikatan data yang akan dilakukan dengan mekanisme sebagai berikut.
Pemetaan XML response dapat dilakukan dengan berbagai cara yakni menggunakan custom Business Logic atau menggunakan tipe data yang mendukung koleksi dan pengikatan data seperti menggunakan DataTable.
Berikut dikemukakan langkah-langkah yang dapat dilakukan untuk melakukan pengikatan data pada project yang bersangkutan.
1. Tambahkan sebuah class dengan nama Agregator.cs. Hal ini dapat dilakukan dengan cara add new item -> pilih class -> beri nama Aggregator.cs
2. Visual Studio akan menampilkan berkas class pada solution explorer. Class ini akan menjadi class yang berkomunikasi langsung dengan web services dan akan mengkonversi hasilnya menjadi class .NET yang dalam hal ini akan diubah dalam bentuk datatable.
3. Pada class yang bersangkutan tambahkan sebuah method untuk memanggil web services ke LIve Search sebagai berikut.
public static DataTable LiveDoSearch(string query) { MSNSearchService aSearch = new MSNSearchService(); // check if it use proxy like SQUID string webProxy = WebConfigurationManager.AppSettings.Get("proxy"); if (webProxy.Length != 0) { string user = WebConfigurationManager.AppSettings.Get("user"); string passsword = WebConfigurationManager.AppSettings.Get("password"); WebProxy myProxy = new System.Net.WebProxy(webProxy, true); myProxy.Credentials = new System.Net.NetworkCredential(user, passsword); aSearch.Proxy = myProxy;
} // request web services SearchRequest sr = new SearchRequest(); SourceRequest[] srcr = new SourceRequest[1]; srcr[0] = new SourceRequest(); srcr[0].Source = SourceType.Web; sr.Requests = srcr; sr.CultureInfo = "en-us"; sr.Flags = SearchFlags.MarkQueryWords; sr.Query = query; sr.SafeSearch = SafeSearchOptions.Strict; //identity sr.AppID = WebConfigurationManager.AppSettings.Get("liveappid"); SearchResponse srsp = aSearch.Search(sr); //convert result to native object DataTable resultTable = new DataTable("ResultTable"); resultTable.Columns.Add("Title"); resultTable.Columns.Add("Descriptions"); resultTable.Columns.Add("URL"); foreach (SourceResponse item in srsp.Responses) { Result[] sourceResults = item.Results; if (item.Total > 0) { foreach (Result sourceResult in sourceResults) { resultTable.Rows.Add(sourceResult.Title, sourceResult.Description,sourceResult.Url); } } } return resultTable; }
4. Kode di atas melakukan beberapa hal yakni menerima masukan berupa query string ke Live Search web services dan mengembalikan dalam bentuk DataTable. Hal-hal yang dilakukan adalah sebagai berikut
a. Melakukan pengesetan nilai query dan beberapa properties, seperti bahasa kata kunci, dukungan safesearch, hingga app ID.
b. Mengirim sekumpulan properties dan kata kunci tersebut ke web services yang bersangkutan.
c. Hasil dari Web Services berupa response diterima dalam variable tertentu (dalam hal ini SearchResponse).
d. Variabel yang menyimpan hasil kemudian dipetakan ke dalam Datatable. DataTable yang dibuat memetakan beberapa informasi yakni judul hasil pencarian, deskripsi hasil pencarian, dan link hasil pencarian.
e. Nilai datatable kemudian dikembalikan sebagai keluaran method.
5. Pada class yang sama tambahkan method untuk memanggil web services Amazon. Berikut adalah code untuk melakukan pemanggilan Web Services Amazon
6. Kode di atas melakukan beberapa hal yakni menerima masukan berupa query string ke Amazon web services dan mengembalikan dalam bentuk DataTable. Hal-hal yang dilakukan adalah sebagai berikut
a. Melakukan pengesetan nilai query dan beberapa properties, seperti bahasa kata kunci, dukungan safesearch, hingga app ID.
b. Mengirim sekumpulan properties dan kata kunci tersebut ke web services yang bersangkutan.
c. Hasil dari Web Services berupa response diterima dalam variable tertentu (dalam hal ini ItemSearchResponse).
d. Variabel yang menyimpan hasil kemudian dipetakan ke dalam Datatable. DataTable yang dibuat memetakan beberapa informasi yakni judul hasil pencarian, URL hasil pencarian, dan Image hasil pencarian.
e. Nilai datatable kemudian dikembalikan sebagai keluaran method.
7. Pada kode akses Web Services di Amazon dan Live Search tampak jelas bahwa terdapat rutin
yang sama dalam melakukan pengecekan proxy. Hal tersebut harus dihindari demi tercapainya efisiensi dalam pemograman. Hal ini dikenal dengan konsep refactoring. Pengecekan proxy dan pengesetan proxy dilakukan dengan mengeset proxy autentifikasi ke proxy class Web Services yang bersangkutan. Hal yang menarik baik Amazon Proxy Class maupun Live Search keduanya adalah turunan mendasar dari class SOAPHTTPClientProtocol.
8. Berdasar pada informasi di atas maka dapat dilakukan pembuatan method yang menerima
masukan SoapClientProtocol. Berikut adalah kode yang dapat ditambahkan pada class Aggregator.
9. Berikutnya pembaca dapat menghapus kode dibagian pengesetan proxy hingga sebagai berikut (perhatikan yang bercetak tebal)
10. Hal tersebut juga berlaku pada Amazon Search
Pengikatan Data melalui Web Services
Author: Admin
| Posted at: Saturday, June 13, 2009 |
Filed Under:
Web Aggregator Hands On Lab (2)
|
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment