« 複数のサイドバーの使い分け | トップページ | metaWeblog.newMediaObject の裏技 »
2004.04.26
metaWeblog.newMediaObject の問題点
簡易XML-RPC クライアントの開発を続けているところですが、以下のような問題に遭遇。
いきなり、ココログでテストするのも何なので、ローカルマシンにインストールした Movable Type 2.661
で試験をしているのですが、metaWeblog.newMediaObject を使ってファイルをアップロードしてみたところ、
アップロード後のファイル末尾にゴミが付いてしまうのです。
metaWeblog.newMediaObject は、ファイルをそのままアップロードするのではなく、base64エンコードしたものをアップロードするのですが、
Base64では、元のバイナリデータの6bit分を0~63までの数値とみなし、これらにアルファベットの大文字(26文字)、アルファベットの小文字(26文字)、数字(0~9までの10文字)、記号(「+」と「/」の2文字)の64文字に変換する。このデータ変換は、元のデータの3byte(24bit)を6bit×4とみなして、4文字に変換する。元のデータが3の倍数でない場合には、変換結果が4の倍数になるように、「=」を1つないし2つ追加する。
@IT:Insider's Computer Dictionary [Base64]
のように、base64エンコード時に末尾に '=' が1個もしくは2個付くことがあります。
この '=' がそのままアップロード後のファイルに残ってしまうようです。サーバ側でちゃんと取り除いてくれないようですね。
困ったなぁ…。クライアント側では回避しようがないですよねぇ。
*** 2004年4月26日 15時35分 追記 ***
クライアント側で対処する方法を発見。というか、base64 エンコード処理の '=' の扱い方を変えてみたら、
うまくいくようになりました。@IT の説明をそのまま真に受けたのが失敗。
(ちょっとインチキくさいですが、いちばん手っ取り早い対処法としては)@IT の説明通りに base64 変換した後、
末尾の文字を再度 '=' に戻してやれば OK。
これで、次のステップ (Atom API の実装) に進めます。
Atom API では WSSE の PasswordDigest の生成に base64 を使っているので、
こっちがうまくいかないと、そっちもうまくいかない可能性が大きいのです。
投稿者: tsupo 2004.04.26 午後 12:18
| 固定リンク
|
|
| ![]()
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: metaWeblog.newMediaObject の問題点:



