Objective - C 동기 화 요청, 비동기 요청, GET 요청, POST 요청

14205 단어 Objective-C
이 글 은 다음 과 같다. http://www.sollyu.com/objective-c-synchronization-requests-requests-for-asynchronous-requests-get-and-post-requests/
설명 하 다.
1. 동기 화 요청 은 인터넷 에서 데 이 터 를 요청 할 수 있 습 니 다. 동기 화 요청 을 보 내 면 프로그램 은 사용자 의 상호작용 을 중단 하고 서버 가 데이터 로 돌아 갈 때 까지 다음 작업 을 할 수 있 습 니 다.
2. 비동기 요청 은 메 인 스 레 드 를 막 지 않 고 새로운 스 레 드 를 만 들 것 입 니 다. 사용자 가 비동기 요청 을 한 후에 도 UI 를 조작 할 수 있 고 프로그램 은 계속 실행 할 수 있 습 니 다.
3 GET 요청, 접근 경로 에 인 자 를 직접 쓰 십시오.조작 은 간단 하지만 외부 에서 쉽게 볼 수 있 고 안전성 이 높 지 않 으 며 주 소 는 최대 255 바이트 이다.
4 POST 요청, 인 자 를 body 에 넣 습 니 다.POST 요청 작업 은 상대 적 으로 복잡 합 니 다. 매개 변수 와 주 소 를 분리 해 야 하지만 안전성 이 높 고 매개 변 수 를 body 에 넣 으 면 쉽게 포착 되 지 않 습 니 다.
동기 GET 요청
//   ,  URL
NSURL *url = [NSURL URLWithString:@"http://www.shiniv.com/test.php?type=get"];

//   ,  URL      
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//NSURLRequest          :      ,     :    ,     :        ( )
/*              :
NSURLRequestUseProtocolCachePolicy(    )
NSURLRequestReloadIgnoringLocalCacheData(      )
NSURLRequestReturnCacheDataElseLoad(      ,        ,       )
NSURLRequestReturnCacheDataDontLoad(      ,    ,        ,     ,          )
NSURLRequestReloadIgnoringLocalAndRemoteCacheData(        ,           ,          )
NSURLRequestReloadRevalidatingCacheData(              ,               )*/
//   ,     
NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

동기 POST 요청
//   ,  URL
NSURL *url = [NSURL URLWithString:@"http://www.shiniv.com/test.php"];
//   ,    
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"POST"];//       POST,   GET
NSString *str = @"type=focus-c";//    
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
//   ,     
NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
NSLog(@"%@",str1);

비동기 GET 요청
//   ,  url
NSURL *url = [NSURL URLWithString:@"http://www.shiniv.com/test.php?type=get"];
//   ,    
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//   ,     
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

비동기 POST 요청
//   ,  url
NSURL *url = [NSURL URLWithString:@"http://www.shiniv.com/test.php"];
//   ,    
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"POST"];
NSString *str = @"type=focus-c";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
//   ,     
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

비동기 요청 에이전트
//                
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
    NSLog(@"%@",[res allHeaderFields]);
    self.receiveData = [NSMutableData data];

}
//               ,              
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [self.receiveData appendData:data];
}
//           
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",receiveStr);
}
//       ,      (  ,     )      
-(void)connection:(NSURLConnection *)connection
 didFailWithError:(NSError *)error
{
    NSLog(@"%@",[error localizedDescription]);
}

좋은 웹페이지 즐겨찾기