HTTP通信(GET,POST)
みなさんこんばんは。
最近Webアプリケーションと連携したiOSアプリを開発中です。
今回はWebとの連携に必須となるHTTP通信の方法について紹介します。
ソースコードは以下の通り
◯GET
//URL文字列の作成 NSString *address = [NSString stringWithFormat:@"http://対象のURL?◯◯=%d&◯◯=%d", 対象の変数名, 対象の変数名]; //コンビニエンスコンストラクタってやつらしい NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]]; //レスポンス変数を空で宣言(必要に応じてオブジェクトが作成されるから) NSURLResponse *response = nil; //エラー変数を空で宣言(必要に応じてオブジェクトが作成されるから) NSError *error = nil; //NSURLConnectionのメソッドを呼び出して同期接続を開始 NSData *data = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];
◯POST
//URL文字列の作成 NSString *address = [NSString stringWithFormat:@"対象のURL"]; //URLオブジェクトの作成 NSURL *testurl = [NSURL URLWithString:address]; //POSTの場合はNSMutableURLRequestで宣言する NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:testurl]; //POSTで送るデータを定義 NSString *post_data = [NSString stringWithFormat:@"user_id=%d&question_id=%d", 対象の変数名, 対象の変数名]; //メソッドをPOSTにする request.HTTPMethod = @"POST"; //データをエンコーディング request.HTTPBody = [post_data dataUsingEncoding:NSUTF8StringEncoding]; //レスポンス変数を空で宣言(必要に応じてオブジェクトが作成されるから) NSURLResponse *response = nil; //エラー変数を空で宣言(必要に応じてオブジェクトが作成されるから) NSError *error = nil; //NSURLConnectionのメソッドを呼び出して同期接続を開始 NSData *data = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];
上記GETとPOSTの方法では変数に保存されている値を利用しています。
GETはURLに直接値を書けば使えますが、POSTでは値だけではなく別のコードを書き足す必要があるので注意ですね。
仕組みは詳しく分かりませんがとりあえず通信できるので自分はOKです^^;
自分はGETもしくはPOSTで送ってxmlやjsonで受け取り解析する方法をとっています。
xml,jsonのパースについては今後また記事にしたいと思いますので。
これでWebアプリケーションと連携できる!b
何か不備がありましたらコメント頂きたいと思います。
よろしくお願いします。