티스토리 뷰
- (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;
}
'나름 프로그래밍? > Objective-C' 카테고리의 다른 글
액션 시트 띄우기 (0) | 2010.03.02 |
---|---|
아이폰 내부 경로 (0) | 2010.03.02 |
Xcode에서 SCM 설정하기 (0) | 2010.02.22 |
NSXMLParser로 XML 데이터 얻어오기 (0) | 2010.02.22 |
하이브리드 아이폰 애플리케이션 개발 (0) | 2010.02.19 |