본문 바로가기

Computer

iPhone http client API (NSURLConnection) - 1


아이폰에서는 NSURLConnection Class 를 이용해서 간단하게 Http 통신을 할 수 있습니다.

NSURLConnection Class 로 구현할 수 있는 방식은 두 가지가 있는데, 
예상하셨다시피, 바로 비동기식과 동기식 연결입니다.

그럼 우선 동기식 연결 방식부터 살펴보도록 하죠.

NSURLConnection Class 에서 지원하는 동기식 연결의 메소드는 한개 입니다.

클래스 메소드 입니다. 그러므로 Delegate를 사용할 필요가 없습니다.


사용방법은 아래와 같습니다.

NSMutableURLRequest *request = [NSMutableURLRequest 

requestWithURL:[NSURL URLWithString:url]

cachePolicy:NSURLRequestUseProtocolCachePolicy 

timeoutInterval:TIMEOUT_INTERVAL];



NSError *error;

NSHTTPURLResponse *response;

NSData *recievedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];


하지만 이 동기식 방식은 아이폰에서 치명적인 문제점을 야기하기 때문에 꼭 필요한 곳이 아니라면 선호하지 않는 방식입니다.

이유는 바로, 아이폰은 무선 데이터를 사용한다는 점입니다.

무선데이터의 특성상 느린 속도와, 언제 끊어질지 언제 연결될지 모릅니다. 
접속상태가 불량할 경우도 많겠구요.

Synchronous Method 를 사용하게 되면 접속상태가 불량하다거나 속도가 느리다면,
request를 보낸 후 response 를 받기까지 아이폰은 그냥 그대로 멈춰있게 됩니다.

하나의 메소드가 끝나지 않았으니 다른 작업이 들어갈 수가 없습니다.

그래서 코드를 복잡하게 만드는 Delegate 에도 불구하고 비동기방식을 많이 사용하게 됩니다.
하지만 비동기방식의 HTTP Client를 Wrapping 하여 필요한 정보만 얻을 수 있는 API를 만들어 사용하면 복잡한 코드를 간단하게 만들 수 있습니다. 

다음 블로그에서는 비동기 방식의 Method 소개와 Wrapping Class 를 만들어 보겠습니다.



'Computer' 카테고리의 다른 글

iPhone 3G , Wi-Fi 검사하기  (0) 2010.06.01
iPhone http client API (NSURLConnection) - 2  (2) 2010.05.31
iPhone user Agent  (0) 2010.05.25
iPhone - Delegate 만들기 - 2  (0) 2010.05.25
iPhone - Delegate 만들기 - 1  (0) 2010.05.25