[XCODE] iPhoneアプリからHTTPリクエストを送信して、データを受信する方法
今日もiPhone開発ネタです(*゚▽゚)ノ
今日は、iPhoneアプリからHTTPリクエストを送信して、データ受信する方法を学んだので、 ブログに残したいと思います。NSURLConnection, NSURLRequestなどを使います。

ポイントは、受信したデータをNSMutableDataにデータをApeendする事です。
これでRequestを送信して、データを受信できます。
URL Loading System Programming Guide
上記で紹介した方法以外にも、NSURLConnectionを利用したHTTPリクエスト送信方法を以下の記事で記載しました。
iOSから非同期/同期にHTTPリクエストを送信する方法(Part2)
また他の技術要素を学んだら、ブログに記載したいと思います。
最後までご参照頂きましてありがとうございました。
今日は、iPhoneアプリからHTTPリクエストを送信して、データ受信する方法を学んだので、 ブログに残したいと思います。NSURLConnection, NSURLRequestなどを使います。

HTTP通信を行う方法
HTTP通信を行う方法は色々と準備されていますが、今回は 上位レイヤーで使い方が簡単なNSURLConnection, NSURLRequestを使います。まずはRequestを送るところ
Requestを送るには、以下のようなソースコードで行うことが出来ます。
// 送信したいURLを作成し、Requestを作成します。
NSURL *url = [NSURL URLWithString:@"http://www.yoheim.net/"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
// NSURLConnectionのインスタンスを作成したら、すぐに
// 指定したURLへリクエストを送信し始めます。
// delegate指定すると、サーバーからデータを受信したり、
// エラーが発生したりするとメソッドが呼び出される。
NSURLConnection *aConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
// 作成に失敗する場合には、リクエストが送信されないので
// チェックする
if (!aConnection) {
NSLog(@"connection error.");
}
続いてデータを受信した際の処理方法
データを受信すると、「connection:didReceiveResponse:」と「connection:didReceiveData:」と 「connectionDidFinishLoading:」の3つのDelegateメソッドが呼び出されます。
// データ受信時に1回だけ呼び出される。
// 受信データを格納する変数を初期化する。
- (void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response {
// receiveDataはフィールド変数
receivedData = [[NSMutableData alloc] init];
}
// データ受信したら何度も呼び出されるメソッド。
// 受信したデータをreceivedDataに追加する
- (void) connection:(NSURLConnection *) connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
// データ受信が終わったら呼び出されるメソッド。
- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
// 今回受信したデータはHTMLデータなので、NSDataをNSStringに変換する。
NSString *html
= [[NSString alloc] initWithBytes:receivedData.bytes
length:receivedData.length
encoding:NSUTF8StringEncoding];
// 受信したデータをUITextViewに表示する。
textView.text = html;
// 終わった事をAlertダイアログで表示する。
UIAlertView *alertView
= [[UIAlertViewalloc] initWithTitle:nil
message:@"Finish Loading"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
ポイントは、受信したデータをNSMutableDataにデータをApeendする事です。
これでRequestを送信して、データを受信できます。
最後にエラー処理を行う
Requestを送るも、何らかのエラーが発生すると以下のDelegateメソッドが呼び出されます。
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
// エラー情報を表示する。
// objectForKeyで指定するKeyがポイント
NSLog(@"Connection failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
参考資料
今回は、以下のリファレンスを参照しました。更に詳しい情報は、以下を参照ください。URL Loading System Programming Guide
追記
2013/02/22上記で紹介した方法以外にも、NSURLConnectionを利用したHTTPリクエスト送信方法を以下の記事で記載しました。
iOSから非同期/同期にHTTPリクエストを送信する方法(Part2)
最後に
また一つ新しい方法を知ることが出来て良かったです(*゚▽゚)ノまた他の技術要素を学んだら、ブログに記載したいと思います。
最後までご参照頂きましてありがとうございました。






