티스토리 뷰

나름 프로그래밍?/ Objective-C

post 방식 예제

알 수 없는 사용자 2010. 2. 23. 11:18

- (void)connectToServer

{

NSString *smsURL = @"http://www.google.co.kr";

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

NSString *post = [NSString stringWithFormat:@"password=%@&id=%@",@"password",@"id"];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

[request setURL:[NSURL URLWithString:smsURL]];

[request setHTTPMethod:@"POST"];

[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

[request setValue:@"Mozilla/4.0 (compatible;)" forHTTPHeaderField:@"User-Agent"];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[request setHTTPBody:postData];


[NSURLConnection connectionWithRequest:request delegate:self ];

}

/* 위와 같은 방식으로 smsURL이라는 주소로 post 형식으로 데이터를 감싸 전송이 가능해진다.

*/


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(returnString);

}

/* 위 Delegate에서는 HTML이 처리되고 난 후 받는 데이터를 얻을 수 있다.

*/


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)aResponse

{

NSHTTPCookie *cookie;

int i=0;

for (cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies])

{

NSLog([cookie description]);

}

}


/* 위 Delegate를 이용하면 post를 보낸 후 쿠키를 얻을 수 있다.

*/



------------------------------아래는 동기식으로 바로 가져오기---------------

-(NSString *)getDetailInfo:(NSDictionary *)bodyObject targetURL:(NSString *)connectionURL

{

// URL Request 객체 생성

NSLog(@"상세 데이터 가져오기");

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:connectionURL]

  cachePolicy:NSURLRequestUseProtocolCachePolicy

  timeoutInterval:1000];

// 통신방식 정의 (POST, GET)

[request setHTTPMethod:@"POST"];

// bodyObject의 객체가 존재할 경우 QueryString형태로 변환

if(bodyObject)

{

// 임시 변수 선언

NSMutableArray *parts = [NSMutableArray array];

NSString *part;

id key;

id value;

// 값을 하나하나 변환

for(key in bodyObject)

{

value = [bodyObject objectForKey:key];

part = [NSString stringWithFormat:@"%@=%@", [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],

[value stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[parts addObject:part];

}

// 값들을 &로 연결하여 Body에 사용

[request setHTTPBody:[[parts componentsJoinedByString:@"&"] dataUsingEncoding:NSUTF8StringEncoding]];

}

// Request를 사용하여 실제 연결을 시도하는 NSURLConnection 인스턴스 생성

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

//NSString *str = [[NSString alloc] initWithData:returnData encoding:0x80000000 + kCFStringEncodingDOSKorean];

NSString *str = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

return str;

//NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//NSString *documentsDirectory = [paths objectAtIndex:0];

//NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"detailData.array"];

//[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

//return filePath;

}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함