今日ふと見つけたのですが、DoCoMoProfile-1.0のcom.nttdocomo.io.HttpConnection
インターフェースに定義上の誤りがあります。今まで何で私も気づかなかったのかと思うのですが、下の表のように定義されています。(「iモード対応Javaコンテンツ開発ガイド ~ APIリファレンス編 ~ 第1.0版」の116ページに該当する記述があります。)
フィールド名 | 値 |
---|---|
HTTP_SERVER_ERROR |
500 |
HTTP_INTERNAL_ERROR |
501 |
しかし、HTTPの規格を定める「RFC 2616: Hypertext Transfer Protocol — HTTP/1.1」を参照してみると
10.5.1 500 Internal Server Error
The server encountered an unexpected condition which prevented it 10.5.2 501 Not Implemented The server does not support the functionality required to fulfill the |
と記述されています。つまり上記の定義内容は本来、下の表のようになるべきなのです。
フィールド名 | 値 |
---|---|
HTTP_SERVER_ERROR |
削除 |
HTTP_INTERNAL_ERROR |
500 |
HTTP_NOT_IMPLEMENTED |
501 |
実際の公式SDK「Java 2 Platform, Micro Edition, Wireless SDK for the DoJa APIs」に含まれるライブラリファイルdojaapi.jar
の定義を確認したところ、実際に誤った定数が定義されていることが確認できました。
そんなによく使う定数ではないのですが、知らずにこの定数を使うとハマるので記憶にはとどめておいた方がよさそうです。この点を考慮してUnofficial “DoCoMoProfile-1.0” API Reference.に「推奨されていないAPI」として追加することにしました。(あと、これに関係する現在存在しないものの、今後定義されるであろう定数を未定義と但し書きをつけた上で追加しました。)
ちなみにこれと同じミスがかつてのJ2SDKにも存在していたようで、やはり現在は「推奨されていないAPI」に分類されています。同じ携帯向け(正確にはモバイル情報機器向け)プロファイルであるMIDPには同様の問題はありませんでした。