[titanium]Basic認証を通す

sxchu_910074_mirage.jpg

TitaniumMobileでBASIC認証を通すのに、HTTPCientのsetBasicCredentialsという関数が使える、という記述を時々見かけます。guides_network_httpclient - titanium-mobile-doc-jaとか。Titanium Mobileで開発するiPhone/Androidアプリにも載っています。

でもこれ、どうも今使えないっぽい。

var xhr = Titanium.Network.createHTTPClient();
xhr.setBasicCredentials('username', 'password');
xhr.onload = function() {
	Ti.API.info('xhr.onload');
};
xhr.onerror = function(e) {
	Ti.API.info('xhr.onerror '+e.error);
};
xhr.open("GET","http://example.com/hoge.html");
xhr.send();

setBasicCredentialsが使えるのであれば、上記のようなコードでうまくいくはずなのですけど、1.7.1iPhoneで走らせると、

[ERROR] Script Error = invalid method '(null)' at app.js (line 2).
そんな関数は知らんぜ、と言われます。実際、Titanium.Network.HTTPClientを見ても、そんな名前の関数は存在しません。1.5位まではさかのぼってみたんだけど、その頃からなかったっぽい。

最初っから存在しなかったらWikiに書かれることもないはずなので、たぶん過去のある時点では存在したのだと思います。バージョンが変わったら関数が一個なくなるくらい、TitaniumMobileの利用者は慣れっこですよね?(涙)

なお、setBasicCredentialsが使えない状態でどうやってBASIC認証を通すかについては、Antelope Love Fan -- Basic Authentication with Titanium.Network.HTTPClientが参考になりました。

var xhr = Titanium.Network.createHTTPClient();
xhr.onload = function() {
	Ti.API.info('xhr.onload');
};
xhr.onerror = function(e) {
	Ti.API.info('xhr.onerror '+e.error);
};
xhr.open("GET","http://example.com/hoge.html");
var authstr = 'Basic ' +Titanium.Utils.base64encode(username+':'+password);  
xhr.setRequestHeader('Authorization', authstr);  
xhr.send();

openしてからsetRequestHeaderを呼び出すのがポイントです。

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: [titanium]Basic認証を通す

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/1198

コメント(1)

SDK Version 1.8.1
で試してみましたが、同じエラーがでました。
参考までに。
message = "invalid method '(null)'"

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2011年6月24日 23:29に書いたブログ記事です。

ひとつ前のブログ記事は「 「Titanium Mobileで開発するiPhone/Androidアプリ」 」です。

次のブログ記事は「 Titaniumの単体テスト 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type