2009-01-29 JavaでAtom APIでのはてなブックマークPOSTが403 Forbidden
はじめまして。
今回、JavaではてブのAtom APIを使っていて気づいたことがあるので、はてなダイアリーに投稿しました。
完全に自分用のメモですね。
タイトル通り、JavaではてブのAtom APIにPOSTするとアクセス拒否されてしまっていたんですが、解決しました。
具体的なエラーは、Atom APIでのはてなブックマークPOSTが403 Forbiddenに載っているものと同じです。
原因は違うかもしれませんが、他にも似たようなエラーが起きている人がいます。
原因はUser-Agentが間違っていたせいでした。
具体的には「Java/バージョン」としていたんですが、正しくは「Sun Java/バージョン」でした。
そんなことで8時間くらい費やしてしまいました。
ちなみに、http://b.hatena.ne.jp/dumpにGETで全件取得するときはUser-Agentを指定しなくてもいけます。
どうやら、POSTのときはUser-Agentのチェックが厳しいようです。
なんでこんなことになったのかというと、
実はJavaで作る前にRubyで作っていたんですが、そのときは問題なく動いていていました。
そのときはUser-Agentが「Ruby/バージョン」でできてたので、Javaでは「Java/バージョン」でいいのかと思ってしまっていたのです。
しかし、よく見てみるとRubyのときとJavaのときの違いはUser-Agentだけだったんです。
それで、JavaでもUser-Agentを「Ruby/1.8.6」としてみたら、成功してしまったので、JavaのときのUser-Agentは「Java/バージョン」ではないと気づき、
適当に「Sun」を付けてみたら成功しました。
追記:User-Agentが空のときもアクセス拒否されます。
参考URL
http://b.hatena.ne.jp/help/api
Rubyでの実装
http://d.hatena.ne.jp/toward/20051225/ruby_hatena_wsse
http://d.hatena.ne.jp/toward/20051225/ruby_hatena_get_all_bookmarks
Javaでの実装



