libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSURLとNSURLConnection (2/6)

作成:2011-02-23 09:36
更新:2011-11-13 21:57

■URLから情報を得る

URLは、ごく単純な「リソースの場所を示すテキスト」ですが、その中にはさまざまな情報が盛り込まれています。

URL内から特定の情報を取得するためのメソッドもいろいろと揃えれれています。それらの中から比較的重要なものをピックアップして整理しておきましょう。

◯絶対URLをテキストで取得
NSString *変数 = [《NSURL*》 absoluteString];
相対的な位置の指定などでなく、フルにアドレスを指定された形のURLテキストを取得するものです。

◯スキームを得る
NSString *変数 = [《NSURL*》 scheme];
スキームというのは、URLの冒頭にある「http」といったものです。これでプロトコルの種類などを指定しています。この部分を取り出すのにschemeが使われます。

◯ホスト名を得る
NSString *変数 = [《NSURL*》 host];
URLの「www.apple.com」などアクセスするホストの名前部分だけを取り出すものです。

◯ポート番号を得る
NSNumber *変数 = [《NSURL*》 port];
アドレスには「http://hoge.com:8080/」というようにホスト名の後に番号をつけたものがありますが、これがポート番号です。この部分を取り出します。

◯クエリテキストを得る
NSString *変数 = [《NSURL*》 query];
クエリテキストというのは、URLのアドレスの後ろに「?id=hoge&pass=hoge」みたいにくっついている部分です。これで必要な情報を受け渡すようになっているんですね。この部分を取り出すのがqueryです。

◯フラグメント識別子を得る
NSString *変数 = [《NSURL*》 fragment];
ページ内の表示位置を指定するのに「index.html#top」というような表示を見たことありませんか。この「#top」といった部分がフラグメント識別子です。この部分を取得します。

◯パスの構成要素をNSArrayでまとめて得る
NSArray *変数 = [《NSURL*》 pathComponents];
URLを、パスの構成要素ごとにバラバラにしてNSArrayにまとめたものを取得します。各階層名ごとに何かの処理をしたい時に便利でしょう。

では、これも簡単な利用例を挙げておきましょう。下のリストでは、適当なアドレスを指定してNSURLを作成し、その情報を取り出してみました。URLの必要な部分だけを抜き出すのにこうしたメソッドは非常に役立ちます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* address = 
            @"http://apple.com:8080/jp/index?id=acd";
        NSURL* url = [NSURL URLWithString:address];
        NSLog(@"%@",[url absoluteString]);
        NSLog(@"%@",[url port]);
        NSLog(@"%@",[url host]);
        NSLog(@"%@",[url path]);
        NSLog(@"%@",[url query]);
    }
    return 0;
}

※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る