トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     crossdomain.xml以外の方法で別サーバーからデータを取ってくる方法
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
961832p
Åê¹ÆNo.42048
投稿日時: 2009-4-9 16:05
常連
居住地: Akiruno-shi
投稿: 155
使用環境:
Re: crossdomain.xml以外の方法で別サーバーからデータを取ってくる方法
 
どのようなデータを取得したいのか不明なのですが、気になるので自分も挑戦してみました。
 ・テストページスクリーンショット

まとめWikiから公式APIの存在を知ったので見ていると、認証を必要としない public_timelineメソッド を発見。
自分はアカウントをもっていないので、このメソッドを使って公開ユーザーの最新発言をXML形式で取得、Flashで表示してみることに。
 ・Twitter API - TwitterまとめWiki

使用したメソッドのURL

http://twitter.com/statuses/public_timeline.xml

まず、上記URLをブラウザに入れて直接取得できることを確認しました。
次にFlashからの取得ですが、そのままURLを入れた場合はやはり取得できませんでした。作成は FlexSDK3.3.0.4852 です。

取得できない

…
var urlreq:URLRequest =
    new URLRequest("http://twitter.com/statuses/public_timeline.xml");
var urlloader:URLLoader = new URLLoader();
urlloader.addEventListener(Event.COMPLETE, urlloader_complete);
urlloader.load(urlreq);
…

あーだこーだやっていましたが、やっぱりCGIスクリプトを使って取ってくるのが確実なようです。

CGIスクリプトで取得

…
var urlreq:URLRequest = new URLRequest("public_timeline.cgi");
//var urlreq:URLRequest = new URLRequest("public_timeline.cgi?since_id=12345");
var urlloader:URLLoader = new URLLoader();
urlloader.addEventListener(Event.COMPLETE, urlloader_complete);
urlloader.load(urlreq);
…

public_timeline.cgi

…
print "Content-type:application/xml\n\n";
##パラメータ(?以降の文字列)の取得&チェック##コンテンツの取得
my $url = "http://twitter.com/statuses/public_timeline.xml?$param";
my $http = HTTP::Lite::Fetch->fetch($url) or die HTTP::Lite::Fetch->errstr;
print $http->body . "\n";
…

今回、取得用CGIスクリプトにはPerlを使いましたが、PHPなど他の言語でも大丈夫です。
 ・FlashでTwitterの発言を取得してみる | alt
 ・YOPPA BLOG » Flash(AS3)でcrossdomain.xml無しにクロスドメインにアクセスする

Fx3、IE6、IE7、Chromiumの各ブラウザで確認していたところ、なぜか IE6 だけ URLLoaderクラス の IOErrorEvent.IO_ERRORイベント が発生してデータ取得できないという問題がおきました(エラー番号は#2032)。
IE6のバグなのか分かりませんが、コンテンツが圧縮転送されているとダメということが分かり、圧縮しない設定を .htaccess に記述して回避できました。このへんはWebサーバーの環境によって違ってくると思います。
 ・FlexのHTTPアクセスで「#2032: ストリームエラー」が出てハマる - ヒマをみつけてWeb開発

.htaccess

<ifmodule mod_gzip.c>
    mod_gzip_on no
</ifmodule>

公式サイトには色々なライブラリがあり、Flash用のもいくつか紹介されていました。
その中でも Tweetr は、ドキュメントや取得用CGIスクリプト(PHP)も付属していましたので、手軽に始められそうな感じがしました。
 ・Twitter API Wiki / Libraries | ActionScript/Flash

試していませんが Adobe AIR では、CGIスクリプトを使わなくても出来るもようです。
 ・Adobe AIRでiTunes×Twitterクライアントを作ってみた(1/2) ? @IT

以上、日記みたいになってしまいましたが(汗)、何かの手がかりになれば幸いです。


----------------
:961832p:
- だんだんAS3に慣れてきた“なんちゃって”AMES使いの日曜プログラマー

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   crossdomain.xml以外の方法で別サーバーからデータを取ってくる方法 Stommy 2009-4-2 21:18
   » Re: crossdomain.xml以外の方法で別サーバーからデータを取ってくる方法 961832p 2009-4-9 16:05

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops