2012-07-18 2 views
2

인터넷에서 NSOS의 NSData로 데이터를 다운로드하려고합니다.iOS에서 인터넷의 데이터 비율을 다운로드하는 방법을 확인하는 방법은 무엇입니까?

인터넷에서 데이터를 다운로드 할 때 서버에서 다운로드 한 비율을 볼 수 없습니다.

UIWebView를 사용하고 있지 않습니다.

NSData를 사용하여 인터넷에서 사운드 (.mp3)를 다운로드하십시오.

어쨌든 인터넷에서 다운로드 한 데이터의 양을 알 수 있습니까? 사전에

감사합니다.

+0

어떤 다운로드 방법을 사용하고 있습니까? –

+0

NSURLConnection –

+2

NSURLConnectionDataDelegate를 구현합니다. 총 패키지의 바이트 수와 현재 얼마나 많은 바이트가 있는지 알려주는 메소드가 있습니다. 이미 다운로드 한 데이터에 새 데이터를 추가하고 currentDataBytes/totalBytes의 백분율을 계산해야합니다. – George

답변

5

단계 :

1)가 .MP3의 URL에 대한 요청과 함께있는 NSURLConnection을 만듭니다.

2) self을이 연결의 대리자로 설정하십시오.

3) NSURLConnectionDataDelegate 프로토콜을 구현하십시오. (클래스의 인터페이스 선언 옆에 추가

4.) 이러한 방법을 구현 :이 도움이

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 
    statusCode = [httpResponse statusCode]; 
    if ((statusCode/100) == 2) 
    { 
     contentLength = [httpResponse expectedContentLength]; 
     if (contentLength == NSURLResponseUnknownLength) 
       NSLog(@"unknown content length %ld", contentLength); 
    } 

} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    bytesSum += [data length]; 
    percent = (float)bytesSum/(float)contentLength; 

    // append the new data to the receivedData 
    [receivedData appendData:data];  //received data is a NSMutableData ivar. 

} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    //the end. Write your data (stored in receivedData) to a local .mp3 file. 
} 

희망을.

건배!

+1

안녕하세요, "+ ="오류가 있습니다. –

+1

? 당신은 ivar'long bytesSum'을 선언 했습니까 (수업 중)? – George

+0

궁금한 점이 있는데, 왜'statusCode'를 100으로 나누고 2를 확인하고 있습니까? 왜 그냥 200을 확인하지 않는가? – Undo

0

나는 이것 좀 봐 가지고 제안 : ASIHTTPRequest

당신은 쉽게 다른 좋은 물건을 업로드 및 다운로드 과정을 추적 할 수 있습니다.

세바스찬

+1

ASIHTTPRequest의 개발자조차도 더 이상 사용하지 않는 것이 좋습니다. http://allseeing-i.com/[request_release]; – Abizern

관련 문제