とある HTTP::MobileAgent を wrap してるクラスにあった、ブラウザのキャッシュサイズ取得するところを、プチリファクタ。
sub new { my $class = shift; my $query = shift; bless { query => $query, agent => HTTP::MobileAgent->new, }, $class; } sub get_cache_size { my $self = shift; return $self->{__cache_size} ||= sub { if ($self->{agent}->is_docomo) { return $self->{agent}->cache_size; } elsif ($self->{agent}->is_ezweb) { if (my $byte = $self->{query}->header_in('x-up-devcap-max-pdu')) { return int($byte/1024); } elsif ($self->{query}->header_in('x-up-devcap-screenpixels')) { my ($w) = $self->_get_ezweb_device_size; return $w >= 240 ? 20 : 9; } } elsif ($self->{agent}->is_softbank) { my $version = $self->{agent}->version; return ($self->{agent}->name ne 'J-PHONE') ? 300 : ($version =~ /^[23]\./) ? 6 : ($version =~ /^4\.[0-2]/) ? 12 : ($version =~ /^4\.3/) ? 30 : ($version =~ /^5\./) ? 200 : 100 ; } return 20; }->() * 1024; }
Softbank のあたりは怪しい。。
そんな遠くない未来に『J-PHONE/\d\.\d/』な端末の考慮はきえるであろうことを期待(え、もうしてない?)。
http://mobilehacker.g.hatena.ne.jp/ziguzagu/20070821/1190169571 で書いた問題の続き。
どうやら、https://secure.softbank.ne.jp を経由すると送られてくる模様。
https://example.com/test?foo=bar
ていうところにいきたい場合は、
https://secure.softbank.ne.jp/example.com/test?foo=bar
に。ただし、example.com でオレオレ証明書使ってる場合はエラーになる。。
ていうのは、すごく常識だったのかもしれないという不安に駆られ中。。。
必要に駆られて、HTTP POSTリクエスト時に送信可能なContent-Bodyの最大長を調べた。
http://www.nttdocomo.co.jp/service/imode/make/content/flash/feature/index.html
Webブラウザでの制限については、明確な資料がみあたらない。上記の資料はFlashの話だけど、Webブラウザで動くもの(という解釈でいいのか…?)なので同じ制限になるはず。
http://www.au.kddi.com/ezfactory/tec/spec/ezplus.html
こちらもWebブラウザではなく。。JavaでのHTTP POSTの制限。
上記の資料ではHTTP GET/POST のレスポンス時の最大長が9,000B(約9KB)となっていて、これは下記URLにある、Webブラウザでの制限と同じ約9KBということで、たぶんこのPOSTについてもおんなじじゃないかと期待。
http://www.au.kddi.com/ezfactory/tec/spec/xhtml.html
http://developers.softbankmobile.co.jp/dp/tool_dl/web/tech.php のウェブコンテンツ開発ガイド[HTTP編] - 3.15.12 Content-Lenght より。
ちゃんと資料がある!w
謎仕様(というか端末の挙動)が多いというのは別にして、Softbankはオープンな資料については豊富で助かる。
送信可能な上限にあわせて、少なくとも textarea には全部 maxlength つけておいたほうがいいかなぁ。。HTTP::MobileAgent に max_post_length みたいのがあってもいいかも。
ちなみに、最大サイズを超えたものを送信しようとした場合は、超えた分だけ切られて最大サイズ分のみ送られる(これってHTTPの仕様でRFCになってたりするのかしら…)。
なんにせよ、マニアックな対応のような。。
Softbank の一部端末で HTTPS だとx-jphone 系ヘッダ(全部?)が送られてこないくさい。具体的にはこいつら↓
903SH、910SH で確認(SH 依存かしら…)。公式サイトだと問題ないのかしら?(ないんでしょう、たぶん。使ったこと無かったけど)
簡単ログインできない。
おわた。。。
tokuhirom2007/08/21 14:40X-Jphone-UID を http で取得しちゃって、その後から SSL に移行するとかですかね。。。
gamedeep2009/03/24 18:55ぐぐるさんで検索するとここが上位なんで正解っぽい解説に誘導:http://d.hatena.ne.jp/mizincogrammer/20080630/p1