ASIHTTPRequest 상세 설명 [고전 2]

6156 단어 ASIHTTPRequest
ASINetwork Queues, delegate 는 더욱 풍부 한 기능 을 제공 합 니 다.
더 많은 리 셋 방법 은 다음 과 같 습 니 다. a, request Did Start Selector, 요청 할 때 이 방법 을 조정 합 니 다. 이 방법 에서 업무 선택 에 따라 request 대상 의 deleaget 을 설정 할 수 있 습 니 다.b. requestDid ReceiveResponse Headers Selector 는 응답 한 Header 를 받 은 후에 이 방법 을 설계 합 니 다. 이것 은 빅 데 이 터 를 다운로드 할 때 상당히 유용 합 니 다. 방법 에서 더 많은 업무 처 리 를 할 수 있 습 니 다.c, requestDid FinishSelector, 요청 및 응답 이 완료 되 었 을 때 이 방법 d, requestDid FailSelector, 요청 실패 e, quueDid FinishSelector 를 호출 합 니 다. 전체 대기 열의 모든 요청 이 끝 났 을 때 이 방법 을 호출 합 니 다.
그것 은 NSOperation Queues 의 확장 으로 작고 강력 하 다.그러나 그 부류 와 는 조금 다르다.예 를 들 어 대기 열 에 만 추가 하면 요청 을 수행 할 수 없습니다. [quue g o] 를 호출 해 야 실행 할 수 있 습 니 다.실행 중인 대기 열 입 니 다. [quue go] 를 중복 호출 할 필요 가 없습니다.기본적으로 대기 열 에 있 는 요청 이 실패 하면 완료 되 지 않 은 모든 요청 을 취소 합 니 다.[queue set ShouldCancel AllRequests OnFailure: NO] 를 설정 하여 수정 할 수 있 습 니 다.
비동기 요청 취소
우선 동기 화 요청 은 취소 할 수 없습니다.그 다음으로 대기 열 요청 이 든 간단 한 비동기 요청 이 든 모두 [request cancel] 을 호출 하여 요청 을 취소 합 니 다.
취 소 된 요청 은 기본적으로 요청 실패 에 따라 처리 되 며 요청 실패 delegate 를 호출 합 니 다.delegate 방법 을 사용 하지 않 으 려 면 [request clearDelegates AndCancel] 을 설정 합 니 다.
대기 열 요청 에서 주의해 야 할 것 은 요청 을 취소 하면 대기 열 에서 다른 모든 요청 을 자동 으로 취소 합 니 다.요청 하나만 취소 하려 면 대기 열 을 설정 할 수 있 습 니 다: [queue set ShouldCancelAllRequestsOnFailure: NO];모든 요청 을 취소 하려 면: [queue cancelAllOperations];
안전 한 메모리 회수 제안
request 는 delegate 를 retain 하지 않 았 기 때문에 요청 이 완료 되 지 않 았 을 때 이 delegate 를 풀 었 습 니 다. dealloc 방법 에서 모든 요청 을 취소 하고 요청 인 스 턴 스 를 풀 어야 합 니 다. 예 를 들 어: - ( void )dealloc {     [request clearDelegatesAndCancel];     [request release];     ...     [ super dealloc]; }
서버 쪽 에 데이터 업로드
ASIFormDataRequest, 아 날로 그 폼 제출, 제출 형식 과 Header 가 자동 으로 식 별 됩 니 다.파일 없 음: application / x - www - form - urlencoded 파일 있 음: multipart / form - data ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:@ "Ben" forKey:@ "first_name" ]; [request setPostValue:@ "Copsey" forKey:@ "last_name" ]; [request setFile:@ "/Users/ben/Desktop/ben.jpg" forKey:@ "photo" ]; [request addData:imageData withFileName:@ "george.jpg" andContentType:@ "image/jpeg" forKey:@ "photos" ];
사용자 정의 데 이 터 를 보 내 려 면: ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request appendPostData:[@ "This is my data" dataUsingEncoding:NSUTF8StringEncoding]]; // Default becomes POST when you use appendPostData: / appendPostDataFromFile: / setPostBody: [request setRequestMethod:@ "PUT" ];
파일 다운로드
request 의 setDownloadDestinationPath 를 설정 하면 파일 다운로드 용 다운로드 대상 디 렉 터 리 를 설정 할 수 있 습 니 다.우선 다운로드 프로 세 스 파일 은 temporary FileDownloadPath 디 렉 터 리 에 저 장 됩 니 다.다운로드 가 완료 되면 다음 과 같은 일 을 할 수 있 습 니 다. 1. 데이터 가 압축 되 어 있 으 면 압축 을 풀 고 파일 을 download DestinationPath 디 렉 터 리 에 두 면 임시 파일 이 삭제 되 고 다운로드 에 실패 하면 임시 파일 은 download DestinationPath 디 렉 터 리 로 직접 이동 하여 같은 이름 의 파일 을 교체 합 니 다.
다운로드 중인 모든 데 이 터 를 가 져 오 려 면 delegate 의 request: didReceiveData: 방법 을 실현 할 수 있 습 니 다.그러나 이 방법 을 실현 한다 면 request 는 다운로드 가 끝 난 후에 request 는 파일 을 download DestinationPath 에 두 지 않 고 수 동 으로 처리 해 야 합 니 다.
응답 정보 가 져 오기
정보: status, header, responseEncoding [request responseStatusCode]; [[request responseHeaders] objectForKey:@ "X-Powered-By" ];   [request responseEncoding];
요청 진도 가 져 오기
요청 진 도 를 가 져 올 수 있 는 두 가지 방법 이 있 습 니 다. 1, download ProgressDelegate, 다운로드 진도 2, upload ProgressDelegate 를 가 져 올 수 있 습 니 다. 업로드 진 도 를 가 져 올 수 있 습 니 다.
쿠키 지원
쿠키 가 존재 하면 이 정 보 를 NSHTTPCookieStorage 용기 에 넣 어 공유 하고 다음 에 사용 할 수 있 도록 합 니 다.[ASIHTTRequest setSession Cookies: nil] 을 사용 할 수 있 습 니 다.모든 쿠키 를 삭제 합 니 다.물론 기본 쿠키 정책 을 취소 하고 사용자 정의 쿠키 를 사용 할 수도 있 습 니 다. //Create a cookie NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease]; [properties setValue:[@ "Test Value" encodedCookieValue] forKey:NSHTTPCookieValue]; [properties setValue:@ "ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName]; [properties setValue:@ ".allseeing-i.com" forKey:NSHTTPCookieDomain]; [properties setValue:[NSDate dateWithTimeIntervalSinceNow: 60 * 60 ] forKey:NSHTTPCookieExpires]; [properties setValue:@ "/asi-http-request/tests" forKey:NSHTTPCookiePath]; NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];   //This url will return the value of the 'ASIHTTPRequestTestCookie' cookie url = [NSURL URLWithString:@ "http://allseeing-i.com/ASIHTTPRequest/tests/read_cookie" ]; request = [ASIHTTPRequest requestWithURL:url]; [request setUseCookiePersistence:NO]; [request setRequestCookies:[NSMutableArray arrayWithObject:cookie]]; [request startSynchronous];   //Should be: I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie' NSLog(@ "%@" ,[request responseString]);

좋은 웹페이지 즐겨찾기