1

ASIHTTPRequest을 사용하여 대기중인 요청을 100 개 이상 보냈지 만 서버에서 단일 IP가 1 분 내에 5 개 이상의 요청을 보낼 수 없다는 제한이 있습니다. ASIHTTPRequestASINetworkQueue을 사용하면 어떻게 확인할 수 있습니까? 생각?분당 5 개 미만의 요청을 보내는 방법.

미리 감사드립니다.

카이.

답변

0

나는 생각하지 않는다 중 하나 ASINetowrkQueue의 NSOperationQueue이 두 가지 옵션 그래서 당신이 직접이 작업을 수행 할 수 있습니다 :

  1. 서브 클래스 NSOperationQueue/ASINetworkQueue 및 분당 요청 제한에 대한 지원을 추가는 대역폭 조절을 살펴 가지고 그들은 이미합니다.
  2. 대기열에 분당 5 회의 조작 만 추가하십시오. 100 개 이상의 ASIHTTPRequests 목록을 작성하고 ASINetworkQueue에 5 개를 추가하고 위임자를 사용하여 완료하면 추적하십시오.

해결 방법 2) ASI 코드를 파고 들지 않아도되기 때문에 더 쉬울 수도 있지만 1) 분명히 명확하고 분명히 찾을 수있는 다른 사람들과 코드를 공유 할 수 있습니다. 유용합니다.

1

당신이 할 수있는 일은 요청을 빌드하고 AVMutableArray에 저장하고 당신의 요청이있을 경우 매 15 초 (15 * 5 = 60)를 확인하는 타이머를 갖는 것입니다. 당신은 당신이 넣어 서버로 보내는 대신 요청을 만들 때마다보다

@@synthesize queueTimer = _queueTimer; 
@@synthesize requestsQueue = _requestsQueue; 

- (void)viewDidLoad: 
{ 
    self.requestsQueue = [NSMutableArray array]; 
    self.queueTimer = [NSTimer timerWithTimeInterval:15 target:self selector:@selector(sendRequest) userInfo:nil repeats:YES]; 
} 

: 당신의 시간 파일의 예를 들어, 당신은 당신보다이 작성해야 당신의 m 파일에서

@property (nonatomic, retain) NSTimer *queueTimer; 
@property (nonatomic, retain) NSMutableArray *requestsQueue; 

- (void)sendRequest; 

뭔가를 할 수 있습니다

: 여기

[self.requestsQueue addObject:request]; 

그리고이 배열에서 그들은 sendRequest 방법

또한

[queueTimer invalidate]; 

희망이 도움이 같은 타이머를 무효로 당신의 dealloc 방법에 잊지 마세요. 뭔가 잘못되었을 때 알려주세요.

관련 문제