スケルトン・エピ

letsspeakのブログです。

TwitterAPIでxml取得時にsearchではまった件

はまった記事が続いています。こんばんはletsspeakです。

いまさらTwitterAPIでxml取得している人なんていないと思いますが、searchAPI時にちょっとした事ではまってしまったので記事に残しておきます。理由は主に私自身の技術力不足と注意力不足なのですが・・。

対象者

 ・TwitterAPIを使用している
 ・TwitterAPIで今更フォーマット指定xmlを使用している。
 ・iOS4.x用にMGTwitterEngineを使っている。
 ・MGTwitterEngineでsearchを使いたい。
 ・でも何故かjsonが自動で有効になるしYAJLのリンクとか分からない!

経緯

iOS 4.xでTwitterAPIを使用するべくMGTwitterEngineを使っているのですが、前述の通りMGTwitterEngineでのデフォルトjson取得がYAJLだったりしたため、難しそうなライブラリリンクを回避してxmlフォーマットでのデータ取得を利用していました。

普通のTwitterAPIを叩く分には何も問題がなかったのですが、search関連のAPIはMGTwitterEngine上でYAJLを有効にしなければならず、#defineをコメントアウトしたりして無理矢理seachを使用しようと試みました。そしてはまりました。

問題

searchAPIを叩いても何故か40Xエラーが出まくる。
調べてみると次のURLを叩いている。 http://search.twitter.com/search.xml?q=hoge

発生原因と理由

SearchAPIは.jsonと.atomのみに対応しており.xmlは無効です。また、RESTの場合は.jsonのみに対応していますので、正しいAPIの叩き方は以下の通りになります。

SearchAPI (json) http://search.twitter.com/search.json?q=hoge
SearchAPI (atom) http://search.twitter.com/search.atom?q=hoge
REST http://api.twitter.com/1/search.json?q=hoge 

以上です。MGTwitterEngineのコメントやTwitter公式のAPIDocumentをもう少しちゃんと読んでおけばすぐに解決する問題でしたが、今回は3時間ほどはまってしまいました。もう時代はjsonなのですね。無念。