2013年12月31日火曜日

HttpURLConnectionが親切すぎて生きるのがつらい

誰なんですかねえ、こんなオレオレライブラリっぽいのマージしたのは。
自分のアプリだけで使っとけよ!というくらい親切すぎて生きるのがつらい。

getResponceCode()だけでブロックする、というよりread()でブロックする。
ブロックそのものは文句はないんだけど、せめてデータが1バイトでも届いているかチェックするためにinputstreamを取得するだけでブロックする。そこまで面倒を見て下さるなんて感激。
setReadTimeoutが、レスポンスが返ってくるまでの間という大くくりにしか適用できない。
サーバのレスポンスが一定以上だとそもそもreadできない。例外がおきる。

オレオレライブラリの作者には200以外いらなかったのはわかるが、よりによってFileがないよ、っていう例外放り投げるなんてたまげたなあ。超イケテル。

そもそも使うなという評価しか思い浮かばない。

確かにイチからhttpのような原始的なプロトコルの実装を今更やんのかよ、と言いたくなる気持ちもよくわかるけど、こういうオレオレライブラリはSDKから外したほうがいい。

シャリンノサイセイサンガーとかいう人は良く考えたほうがいい。
車輪は回るから車輪であって回らないのは車輪ではない。
無理に回す必要はない。よく回る車輪を作ればいい。

まあ、いろいろ多環境下における仮想環境がらみとかネットに強いアピールが必要だった当時の政治的背景とかあるんでしょうけど。
でもcommitした人に聞いてみたいね。
どう思う?って。

最初からselect()導入しとけばいいのに・・・
当時はなかったとしても、せめてThread.interrupt()できれば使い勝手は向上するとは思うけど、
いったい、だれがこんなもんSDKに忍ばせたんだろう
裏のスレッドでdisconnect()すればキャンセルできるよ!とかへぼすぎでしょ。。。

かくして車輪の再生産が始まるのであった。

0 件のコメント:

コメントを投稿