ASIHTTPRequest 상세 설명 [고전 2]
6156 단어 ASIHTTPRequest
더 많은 리 셋 방법 은 다음 과 같 습 니 다. 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]);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ASIHTTPRequest 상세 설명 [고전 2]이 방법 에서 업무 선택 에 따라 request 대상 의 deleaget 을 설정 할 수 있 습 니 다.b. requestDid ReceiveResponse Headers Selector 는 응답 한 Header 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.