home

2014년 10월 8일 수요일

[펌] AFNetworking을 이용하여 서버로 JSON 주고 받기

http://cafe.naver.com/mcbugi/240759 다크니스님 글입니다.

우선 AFNetworking 라이브러리를 다운로드 받습니다.
이곳에 가셔서 최신 버젼을 다운로드 받으신후 본인이 개발하고 계신 project에 추가합니다.
소스입니다.
편의상 .m파일의 http콜하는 부분만 넣겠습니다.

//서버로 전송할 JSON을 NSDictionary로 만들어 넣습니다.
NSDictionary *httpParams;
NSURL *url  = [NSURL URLWithString:@"호출할 서버 도메인 주소"];
NSString *path = @"호출할 서버 도메인을 제외한 경로";
//AFNetworking에 포함되어 있는 AFHTTPClient를 이용하여 httpClient를 생성합니다.    
AFHTTPClient *httpClient = [[AFHTTPClient allocinitWithBaseURL:url];
//서버로 전송할 데이터를 JSON형태로 넘기기 위해 파라미터 타입을 지정해 줍니다.
//JSON형태가 아닌 일반적인 POST또는 GET방식의 파라미터로 넘기려면 아래 소스를 주석처리합니다.
[httpClient setParameterEncoding:AFJSONParameterEncoding];

//httpClient를 이용하여 URLRequest객체를 생성합니다. parameters에 json형태로 만들어 놓은 dictionary를 넣어줍니다. 위에 설정한 파라미터 타입을 이용하여 해당 파람이 request setBody형태로 넘어가게 됩니다.
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"path:path parameters:httpParams];

//Header값이 필요하다면 셋팅합니다.위에 설정한 setParameterEncoding값으로 인해 "Content-Type" = "application/json; charset=utf-8"은 자동으로 설정됩니다.    
[request setValue:@"HEADER VALUE" forHTTPHeaderField:@"HEADER FIELD"];

//AFJSONRequestOperation을 이용하여 서버로 http콜을 하게 됩니다.
//주의점은 ^블럭(?)처리가 되어 스레드로 동작하게 됩니다. 해당 콜이 끝나고 후작업 처리를 하기 위해선 NSNotificationCenter을 이용하여 처리하셔야 합니다.
AFJSONRequestOperation *operation = [AFJSONRequestOperationJSONRequestOperationWithRequest:request
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){
        //HTTP연동이 성공하였을 경우 서버로 부터 리턴된 값이 JSON이란 id형태로 리턴됩니다.
        NSLog(@"성공:%@,",JSON);
        //리턴 받은 JSON을 NSDictionary형태로 변환합니다. id형태로 넘어 오기 때문에 변환하기 어려워 JSON의 특정 KEY값으로 값을 가져와 담았습니다.
        NSDictionary *responseData = [JSON objectForKey:@"_ResInfo"];

        [[NSNotificationCenter defaultCenter] postNotificationName:[httpOptions objectForKey:@"notiFName"] object:nil userInfo:responseData];
    {];
    [operation start];

...

댓글 없음:

댓글 쓰기