この連載では主にTwitter APIの利用についてしかWebへのアクセスについて解説してきませんでした。今回はTwitter API以外でのネットワークアクセスについて解説していきます。Ti.
Ti.Network.HTTPClient詳細
Ti.
XMLの取得
HTTPアクセスのレスポンスは
var xhr = Ti.Network.createHTTPClient();
xhr.open();
xhr.onload = function() {
var text = this.responseText
}
xhr.send();
というようにresponseTextプロパティで取得している例が多くありますが、
this.responseXML
としてレスポンスを受け取ると、
var win = Ti.UI.currentWindow;
var table = Ti.UI.createTableView();
win.add(table);
function showItems(items) {
var data = [];
for(var i=0;i<items.length;i++){
var row = Ti.UI.createTableViewRow();
row.title = items.item(i).getElementsByTagName("title").item(0).text;
data.push(row);
}
table.setData(data);
}
var xhr = Ti.Network.createHTTPClient();
xhr.open('GET','http://b.hatena.ne.jp/hotentry.rss');
xhr.onload = function() {
var xml = this.responseXML;
// Find the RSS feed 'items'
var items = xml.documentElement.getElementsByTagName("item");
showItems(items);
}
xhr.send();
このように簡単に記述することができるので、
また、

データの取得
ネット上にある画像の表示は、
var win = Ti.UI.currentWindow;
var xhr = Ti.Network.createHTTPClient();
xhr.open('GET','http://cdn-ak.f.st-hatena.com/images/fotolife/r/r_kurain/20090622/20090622140659.jpg');
xhr.onload = function() {
var data = this.responseData;
var imageView = Ti.UI.createImageView({image:data});
Ti.Media.saveToPhotoGallery(data);
win.add(imageView);
}
xhr.send();
この例では、
当然動画や音楽など画像以外のファイルもこの方法で取得することができます。

同期的リクエスト
xhr.open('GET','http://cdn-ak.f.st-hatena.com/images/fotolife/r/r_kurain/20090622/20090622140659.jpg',false);
openメソッドの第3引数をfalseにすると、
YQL
JSONもXMLも用意されていないWebPageから情報を取得したいということも、
select * from html where url="http://b.hatena.ne.jp/" and xpath="//head/title"
と記述するだけで取得できます。この例ではfrom句では対象をhtmlファイルと指定し、
実際に、
YQLへのTitaniumからのアクセス方法は、
Titanium.Yahoo.yql(
'select * from html where url="http://b.hatena.ne.jp/" and xpath="//head/title"',
function(e){
if (e.success)
alert(e.data.title);
}
);
第一引数がYQLになっており、
まとめ
Twitter API利用以外でも便利なネットワーク周りの機能について解説しました。またYQLを利用すると、