'NSURLConnection'에 해당되는 글 2건

  1. 2010.06.24 iPhone NSURLConnection 을 이용한 파일 다운로드
  2. 2010.06.21 [펌] NSURLConnection
아이폰어플개발정보2010. 6. 24. 14:22
iPhone NSURLConnection 을 이용한 파일 다운로드
NSURLConnection 을 이용하면 웹에 있는 파일을 쉽게 다운로드 할 수 있다.
그래. 쉽다. 그런데 이걸 알기까지는 결코 쉽지 않았다. 에휴..

NSURLConnection 을 쓰기 편하도록 KNURLDownloader 를 만들었다.
사용법은 간단하다.

- (void)start {

NSLog(@"Start Test drived development");

KNURLDownloader*knDownloader = [KNURLDownloadersharedInstance];

[knDownloaderdownload:@"http://211.115.217.70/down/ServicePort.plist"

callbackTarget:self

onComplete:@selector(onDownloadComplete:) 

onError:@selector(onError)];

}


정말 쉽지? 두개의 콜백메서드를 할당해줘야 한다. 한가지는 파일 다운로드가 완료되었을 때 동작할 메소드

다른 한가지는 에러가 발생했을때 동작할 메소드다.


그러니까. 이걸 사용하는 콜러에서는 두개의 메소드가 아래처럼 있음직하다.


- (void)onDownloadComplete:(NSMutableData *)pRcvData {

NSLog(@"onFire downloadcomplete callback function");

KNURLDownloader*knDownloader = [KNURLDownloadersharedInstance];

[knDownloader saveToFile:pRcvData pFileName:@"ServicePort.plist"];

}


- (void)onDownloadError {

NSLog(@"onFire downloaderror callback function");

}


다운로드가 완료되었을 때는 saveToFile 메소드를 이용해서 파일을 저장할 수 있다.

나중에 이 클래스를 계속 업그레이드 하면서 파일저장 메소드가 꽤나 많이 생길 것 같은데..




출처 : http://blog.naver.com/PostView.nhn?blogId=suny4rang&logNo=50082266140
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 09:29
[펌] NSURLConnection
NSURLConnection을 이용하면 간단하게 해당 웹서버의 html, xml등의 내용을 쉽게 가져올 수 있습니다.

1. 연결
connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.cocoadev.co.kr/rss]] delegate:self];

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

대상 URL을 인자로 NSURLConnection을 생성합니다. 위는 이 블로그의 rss를 주소로 생성하는 예입니다. delegate는 self로 현제 오브젝트로 지정합니다. delegate로 지정된 오브젝트는 NSURLConnection의 delegate 메소드를 구현하고 메시지를 받을 수 있습니다.

UIApplication의 networkActivityIndicatorVisible을 YES로 하여 데이터 수신 시 좌측과 같이 상단 상태바에 인디케이터가 회전하는 에니메이션으로 사용자에게 데이터 수신중임을 알려줍니다. 기본값은 NO로 되어 있습니다.

2. delegate 메소드 구현
NSURLConnection 생성시 delegate로 지정된 클래스에서는 해당 이벤트 처리 메소드를 구현해야 합니다. 가장 자주 사용되는 delegate 메소드는 데이터 수신, 연결 종료, 오류발생등에 관련된 것들입니다.

1) 데이터 수신
* connection:didReceiveData:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
   [receiveData appendData:data];
}
데이터가 수신될 때 불려지면 웹서버로 부터 받은 데이터가 NSData 형태로 넘어 옵니다. NSMutableData의 appendData 메소드를 이용하여 수신되는 데이터들을 차례대로 저장합니다.

2) 연결 종료
* connectionDidFinishLoading:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
   NSString *str = [[NSString alloc] initWithData:receiveData
encoding: NSUTF8StringEncoding];
   NSLog(@"%@", str);
   [str release];

   [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
데이터가 모두 수신되어 웹서버와의 연결이 종료되었을 때 호출됩니다. 이곳에서 원하는 작업을 하거나 다른 오브젝트가 처리하도록 할 수 있습니다. 위는 NSData로 저장된 데이터를 NSString으로 변환하여 출력하는 예입니다. xml이라면 NSXMLParser를 사용하여 데이터를 처리할 수 있습니다.

3) 오류 발생
* connection:didFailWithError:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
   NSLog(@"Connect error: %@", [error localizedDescription]);   

  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
네트워크가 연결되지 않았을 경우등 오류가 발생하였을 때 호출되는 메소드 입니다. 해당 페이지가 없음을 나타내는 404 오류등은 이 메소드가 호출되지 않습니다.


출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110086703729
Posted by 오늘마감

댓글을 달아 주세요