Penulis: Dflying Chen ( http://dflying.cnblogs.com/ )
Pada artikel sebelumnya (Memanggil Layanan Web di ASP.NET Atlas - Membuat Mashup untuk Memanggil Layanan Web Jarak Jauh (Pengetahuan Dasar dan Contoh Sederhana)), saya memperkenalkan beberapa pengetahuan dasar tentang Mashup untuk Layanan Web jarak jauh di Atlas itu tidak berguna sama sekali. Kembali ke topik hari ini, saya akan memberikan contoh yang lebih kompleks namun berguna - Yahoo!
Cukup omong kosong, mari kita kenali dulu layanan Cuaca Yahoo!: Yahoo! menyediakan layanan ramalan cuaca di situs webnya ( http://weather.yahoo.com/ ), dan juga menyediakan antarmuka Layanan Web ( http :/ /developer.yahoo.com/weather/ )
Dari dua halaman web di atas kita dapat mengetahui bahwa URL layanan cuaca yang disediakan oleh Yahoo! adalah
http://xml.weather.yahoo.com/forecastrss cuaca harus ditanyakan (Anda dapat memeriksa kode ini di berbagai tempat di http://weather.yahoo.com/ ).
u: Satuan suhu pada hasil yang dikembalikan, f mewakili Fahrenheit, dan c mewakili Celsius.
Tampaknya layanan Yahoo! Weather ini cukup sederhana. Mari kita uji apakah berfungsi dengan baik. Pertama buka http://weather.yahoo.com/ dan cari tahu bahwa kode lokasi Shanghai adalah CHXX0116. Kemudian masukkan http://xml.weather.yahoo.com/forecastrss?p=CHXX0116&u=c di browser. Nah, XML yang tidak terlalu rumit berikut ini dikembalikan:
Hasil XML Yahoo Weather Service
http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
http://weather.yahoo.com/
http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
" />
Kondisi Saat Ini:
Kabut, 21 C
Prakiraan:
Kam - Badai Petir Tersebar. Tinggi: 25 Rendah: 20
Jumat - Pagi Hujan Tinggi: 26 Rendah: 18
Prakiraan Lengkap di Yahoo! Cuaca
(disediakan oleh The Weather Channel)
]]>
Kita dapat melihat bahwa informasi yang diberikannya sangat lengkap (bahkan waktu matahari terbit dan terbenam... ), mari kita tulis halaman asbx Bridge ke Mashup Layanan ini.
Pertama, mengacu pada pernyataan asbx pada artikel Memanggil Layanan Web di ASP.NET Atlas - Membuat Mashup untuk Memanggil Layanan Web Jarak Jauh (Pengetahuan Dasar dan Contoh Sederhana), kita dapat menulis paragraf berikut:
di dalam:
Atribut namespace dan className dari
Atribut serviceUrl dari
Metode GetWeather mendefinisikan dua parameter p dan u yang tercantum di atas. Kami telah menetapkan nilai default parameter u sebagai c (mewakili derajat Celcius), dan parameter p akan diteruskan oleh pemanggil.
Langkah ini sebenarnya sudah cukup. Klien akan menerima String XML yang terlihat di browser di atas, dan dapat diproses serta ditampilkan di klien. Namun pemrosesan XML oleh klien tidak semudah atau seefisien itu, dan mengirimkan terlalu banyak informasi yang tidak perlu melalui jaringan juga merupakan pemborosan. Jadi di sini kita menggunakan Transformer bawaan di asbx untuk memproses XML ini, mengekstrak konten yang kita minati dan mengirimkannya ke klien dalam bentuk JSON. Tambahkan paragraf berikut ke bagian
Pernyataan
name adalah segmen atribut pemilih, dan atribut value yang ditentukan adalah ekspresi XPath, yang akan memilih segmen data yang akan digunakan oleh seluruh XPathBridgeTransformer.
name adalah segmen kamus dari namespaceMapping, yang menentukan pemetaan namespace dalam file XML ini. Jika kita menggunakan namespace tertentu pada proses pemilihan node berikut, maka deklarasinya harus ada di sini. Di sini kami menambahkan pemetaan ke yweather, karena akan digunakan di bawah.
name adalah segmen kamus dari Nodes yang dipilih, di mana atribut nilai setiap item adalah String XPath, digunakan untuk memilih nilai yang sesuai dari XML, dan atribut nama digunakan untuk menentukan nama atribut yang sesuai dalam JavaScript. Sebagai contoh di sini, saya hanya memperoleh tiga konten. Anda dapat melihat bahwa namespaceMapping yang ditentukan di atas digunakan di XPath dari CurrentCondition.
Saya tidak akan menjelaskan secara detail tentang XPath, Teman-teman yang tertarik atau belum mengetahuinya bisa mencarinya di Google sendiri. Saya tidak begitu paham dengan jenis Transformer lainnya. Saya akan membicarakannya jika saya menemukannya di masa mendatang. File YahooWeatherBridge.asbx yang lengkap adalah sebagai berikut:
Sekarang buat Halaman ASP.NET untuk diuji. Pertama, masih ada ScriptManager yang diulang ribuan kali, dan referensi ke Bridge:
Lalu ada elemen HTML Select, yang mencantumkan beberapa kota dan kode kota terkait:
Tombol HTML yang digunakan untuk memicu panggilan ke Layanan:
Sepotong HTML digunakan untuk menampilkan hasilnya:
Kemudian muncul JavaScript. Anda dapat melihat bahwa Mashup dipanggil melalui Dflying.YahooWeatherService.GetWeather(), dan nilai yang diubah adalah output ke halaman setelah metode kembali: function getWeather_onclick() {
// kontrol 'Pilih' atlas baru
var tempat = Sys.UI.Select($('tempat'));
// memanggil metode jembatan
Dflying.YahooWeatherService.GetWeather({'p': place.get_selectedValue()}, onGetComplete);
}
fungsi onGetComplete(hasil) {
$('hasil').style.display = "blok";
$('title').innerHTML = hasil[0].Judul;
$('deskripsi').innerHTML = hasil[0].Deskripsi;
}