[iOS] HTTPでサーバアクセス(JSON形式のデータを取得)
HTTPリクエストを送信して、レスポンスを受信する方法をメモ。
今回は、「駅データ.jp」さんが提供している
サービスを利用して、JSON形式のレスポンスを受信してみました。
#JSONといってもテキストなんですが・・・
※ボタン押下を契機にサーバーアクセスしました。
NSURLRequest を作成して、NSURLConnectionインスタンスを生成するとすぐに
リクエストが送信される。
レスポンス時の処理はdelegateで実装する。
実行結果は、コンソールに受信したデータが表示されました。
今後は、パース処理を学習したいと思います。
今回は、「駅データ.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で実装する。
実行結果は、コンソールに受信したデータが表示されました。
今後は、パース処理を学習したいと思います。