UserAgentかよ。
http://d.hatena.ne.jp/tinsep19/20071130
これのつづき。WSSEとかぜんぜん関係なくて、はてながUserAgent見てましたよ。って話。
前回ヘッダーにX-WSSEを無理やりつけるしかない。
という結論にとりあえずたどり着いたのだけど、いざやってみるとやっぱり動かなかった。
前回のソースに以下の部分を追加してやってみた。
UsernamePasswordCredentials unamepass = new UsernamePasswordCredentials("user","password"); RequestOptions opt = client.getDefaultRequestOptions(); GetMethod m = new GetMethod(); WSSEAuthScheme wsse = new WSSEAuthScheme(); String auth = wsse.authenticate(unamepass, m); opt.setAuthorization(auth); Header h = m.getRequestHeader("X-WSSE"); opt.addHeader(h.getName(), h.getValue());
いろいろ試したのだけど、User-Agent以外に違いがなかったので、User-AgentをJakarta Commons-HttpClient/3.1-rc1に変更すると動いた。
ということで、はてブのAtomAPIに接続するための最短ソースはこんな感じ
AbderaClient client = new AbderaClient(); WSSEAuthScheme.register(client,true); UsernamePasswordCredentials unamepass = new UsernamePasswordCredentials("user","password"); client.addCredentials("http://b.hatena.ne.jp", null, "WSSE", unamepass); RequestOptions opt = client.getDefaultRequestOptions(); opt.setHeader("User-Agent", "Jakarta Commons-HttpClient/3.1-rc1"); ClientResponse res = client.get("http://b.hatena.ne.jp/atom",opt);
はてなではUser-Agentによってははじかれてしまうようので、Abdera使う人は気を付けてください。(嘘でしょと思いたいのだが、なぜかそういう結果)
まだドラフトなのね。
ここまでいろいろやってきたけど、結局はてブはまだAtomPubがドラフト状況のままなので、ネームスペースとかが昔のままで、abderaではぜんぜんダメでした。どっか別のサーバーさがします。
追記
abderaのメーリングリストで質問されているのを見つけました。でも対応はまだみたい。
一応認識したから早いうちに対応すると回答されているけどもう少し先になりそう。