人力検索はてなおとなり質問APIのRuby版を動かしてみたのですが、エラーが出て動きませんでした。

何か対策方法があれば教えてください(ruby版動かした人のサイトの紹介でもOKです)

1.動かそうとしたソースのあるURL 以下のruby版
http://hatenaquestion.g.hatena.ne.jp/keyword/%e4%ba%ba%e5%8a%9b%e6%a4%9c%e7%b4%a2%e3%81%af%e3%81%a6%e3%81%aa%e3%81%8a%e3%81%a8%e3%81%aa%e3%82%8a%e8%b3%aa%e5%95%8fAPI

2.エラー内容
 RDEでRUN時のエラー
------------------------------------------
c:/ruby/lib/ruby/1.8/xmlrpc/client.rb:414:in `call': Invalid RPC request (XMLRPC::FaultException)
from C:/soft/ruby/ruby_server/near.rb:22:in `search'
from C:/soft/ruby/ruby_server/near.rb:32
Completed(1)
------------------------------------------

3.使用しているruby
C:\>ruby -v
ruby 1.8.5 (2006-08-25) [i386-mswin32]

http://rubyforge.org/frs/?group_id=167&release_id=6672  入手元

4.OS
 WindowsXP 

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/10/28 16:10:48
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:birdie-brain No.1

回答回数40ベストアンサー獲得回数4

ポイント60pt

RDEは使用していないので、irbでサンプルコードを試してみたところ、まったく同じエラーメッセージに遭遇しました。

そこで、質問中のURL(http://hatenaquestion.g.hatena.ne.jp/keyword/%e4%ba%ba%e5%8a%9b%...)にあるPerl版のサンプルを参考にして、検索文字列の文字コードをutf-8にして渡すとうまくいくことが分かりました。

結論としては、以下の方法が有効ではないでしょうか。

対策1:

>$KCODE = 'u'

をスクリプトの先頭(2行目あたり)に追加しておいてRubyスクリプトをutf-8で記述する。

対策2:

NKFなどの文字コード変換ライブラリを使って、XMLRPCに渡す検索文字列を明示的にutf-8に変換する。

id:garyo

birdie-brainさん、ありがとうございますm(__)m

 言われるとおりに行を追加して、エディタでutf-8に変換すると動くようになりました。

 ついでに「 pp result」の前に以下を追加するとサーバーでも表示するようになりました。

print "Content-type:text/html\n\n";

pp result

初めてWEB API動かせたのでちょっと嬉しいです。

はてなアイデアの方にも書いておきます。

2006/10/28 16:10:20
  • id:garyo
    http://i.hatena.ne.jp/idea/12719
    に登録しておきました。ヘルプが修正されるか注記がつくといいですね。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません