上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[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で実装する。


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


[Objective-C] 定数の定義方法および共通定数クラス

定数の定義には、"#define" を使用する方法と "const" を使用する方法の2通りがある。
C言語で開発してたころは、"#define"で定数の定義などよくしたな、とちょっと懐かしさを感じた。

【サンプル1】

#define CONST_INT_VALUE 100
#define CONST_STR_VALUE = @"TEXT"

【サンプル2】
const int CONST_INT_VALUE 100;
NSString * const CONST_STR_VALUE = @"TEXT";


"#define"の場合、文末に";"(セミコロン)がつかないことに注意する!


アプリなどのソフトを作成していると、各処理で共通して使用したい定数などが必ずといっていいほど出てくる。
そんなときは、定数を1箇所にまとめて定義してメンテナンスしやすくしたほうがいい。

ということで、以下は複数のクラスから参照できる共通定数を作成する方法。

定数クラスを作成する場合、「.h」ファイルに "#define"による定数定義をするか、
"extern const" で定数の宣言をして、「.m」ファイルのほうに実装を記述するかの2通り。

【サンプル3】(上記、後者の例)
XXX.h
------------------
extern const int CONST_INT_VALUE;
extern NSString * const CONST_STR_VALUE;
------------------

XXX.m
------------------
const int CONST_INT_VALUE = 100;
NSString * const CONST_STR_VALUE = @"TEXT";
------------------

プロフィール

hiiro

Author:hiiro

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

この人とブロともになる

QRコード
QR
Counter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。