Twitter Search API に投げかけて検索結果を取得する [Domain=NSURLErrorDomain Code=-1000]

投げかける部分だけでけっこうつまづいていたのでメモ。

ライブラリを使用して
SecretTokenからAccessTokenを取得するところまではなんとか出来た(?)

だけど、
REST Search APIに投げかけてデータを取得するところで失敗している。

 NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/search/tweets.json?q=あまちゃん"];
    
    OAMutableURLRequest *request = [[OAMutableURLRequest alloc]
                                    initWithURL:url
                                    consumer:consumer
                                    token:_accessToken
                                    realm:nil
                                    signatureProvider:nil];
    
    [request setHTTPMethod:@"POST"];
    
    OADataFetcher *fetcher = [[OADataFetcher alloc] init];
    
    [fetcher fetchDataWithRequest:request
                         delegate:self
                didFinishSelector:@selector(searchToken:didFinishWithData:)
                  didFailSelector:@selector(searchToken:didFailWithError:)];

とすると
Domain=NSURLErrorDomain Code=-1000  とエラーが返ってくる。

hIDDEN bLOG » iPhoneOAuth認証するぜの巻
http://hidden.vis.ne.jp/blog/?p=570

ここのページを参考に

アクセストークン(のkeyとsecret)をアプリで保存しておくことで、twitterユーザーのID・パスワードをアプリが関与しなくてもtwitterへ認証できるようになるという仕組みだ。

ってことはアクセストークンを保存して
値きちんとはいってないか、渡し方が悪いのか・・・確認してどうも大丈夫みたい。

それよりもURLの指定が悪かったみたい。

GET search/tweets | Twitter Developers
https://dev.twitter.com/docs/api/1.1/get/search/tweets

A UTF-8, URL-encoded search query of 1,000 characters maximum, including operators. Queries may additionally be limited by complexity.

とあるようにUTF-8エンコードして渡すと書いてある・・・。

そこで

NSString *urlString = @"https://api.twitter.com/1.1/search/tweets.json?q=あまちゃん&lang=ja";
    
    // UTF-8でエンコード
    NSString *encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:
                               NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:encodedString];

と変更したら無事結果返ってきました。良かった。