[iOS] HTTPでサーバアクセス(JSON形式のデータを取得)

HTTPリクエストを送信して、レスポンスを受信する方法をメモ。

今回は、「駅データ.jp」さんが提供している
サービスを利用して、JSON形式のレスポンスを受信してみました。
#JSONといってもテキストなんですが・・・

※ボタン押下を契機にサーバーアクセスしました。


#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

NSMutableData *resData;

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (IBAction)button:(id)sender {
NSLog(@"Button: onClick");

// Make URL
NSURL *url = [NSURL URLWithString:@"http://www.ekidata.jp/api/l/11302.json"];

// Make Requet
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

// NSURLConnectionのインスタンスを作成してリクエスト送信。
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:request delegate:self];

// リクエスト失敗をチェック
if (!con) {
NSLog(@"connection error.");
}
}

// 初回レスポンス時に一度呼び出される
- (void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response {
resData = [[NSMutableData alloc] init];
}

// データを受信する度に呼び出される
- (void) connection:(NSURLConnection *) connection didReceiveData:(NSData *)data {
// resDataに追加する
[resData appendData:data];
}

// データ受信完了時に呼び出される
- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *json = [[NSString alloc] initWithBytes:resData.bytes length:resData.length encoding:NSUTF8StringEncoding];

// とりあえず、受信データを出力
NSLog(@"%@", json);
}

@end


NSURLRequest を作成して、NSURLConnectionインスタンスを生成するとすぐに
リクエストが送信される。

レスポンス時の処理はdelegateで実装する。


実行結果は、コンソールに受信したデータが表示されました。
今後は、パース処理を学習したいと思います。


コメントの投稿

非公開コメント

ありがとうございます。

ソースコードとても参考になりました。
ありがとうございます。
プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter