단순 네트워크 패키지 요청
9911 단어 네트워크
//
// HTTPRequset.h
//
//
// Created by qianfeng on 15-7-26.
// Copyright (c) 2015 qq. All rights reserved.
//
// block ,
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class HTTPRequset;
@protocol HTTPRequsetDelegate <NSObject>
@optional
/**
*/
- (void)requestDidProgress:(CGFloat)progress;
//
- (void)requestDidfinish:(HTTPRequset *)httprequest;
/**
*/
- (void)requestDidError:(NSError *)error;
@end
/**
*/
@interface HTTPRequset : NSObject
/**
*/
@property(nonatomic,strong) NSData * responseData;
/**
*/
@property(nonatomic,copy ) NSString * reponseString;
/**
*/
@property(nonatomic,assign)id<HTTPRequsetDelegate>delegate;
/**
block
*/
@property(nonatomic,copy) void(^requestDidProgressBlock)(CGFloat progress);
/**
block
*/
@property(nonatomic,copy) void(^requestDidFinishBlock)(HTTPRequset * request);
/**
block
*/
@property(nonatomic,copy) void(^requestDidErrorBlock)(NSError * error);
/**
*/
- (id)initWithUrl:(NSURL *)url;
/**
*/
- (void)startRequest;
@end
//
// HTTPRequset.m
//
//
// Created by qianfeng on 15-7-26.
// Copyright (c) 2015 qq. All rights reserved.
//
#import "HTTPRequset.h"
@interface HTTPRequset ()<NSURLConnectionDataDelegate,NSURLConnectionDelegate>
{
NSURL * _url;
//
NSMutableData * _downloadData;
//
long long _fileSizeBytes;
}
@end
@implementation HTTPRequset
- (id)initWithUrl:(NSURL *)url
{
self = [super init];
if (self) {
_url = url;
_downloadData = [NSMutableData data];
}
return self;
}
- (void)startRequest
{
NSURLRequest * request = [NSURLRequest requestWithURL:_url];
[NSURLConnection connectionWithRequest:request delegate:self];
}
#pragma mark -
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//
_downloadData.length = 0;
//
_fileSizeBytes = [response expectedContentLength];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//
[_downloadData appendData:data];
//
float progress = (float) _downloadData.length / _fileSizeBytes;
if ([self.delegate respondsToSelector:@selector(requestDidProgress:)]) {
[self.delegate requestDidProgress:progress];
}
self.requestDidProgressBlock(progress);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//
[connection cancel];
//
_responseData = _downloadData;
_reponseString = [[NSString alloc]initWithData:_downloadData encoding:NSUTF8StringEncoding];
self.requestDidFinishBlock(self);
if ([self.delegate respondsToSelector:@selector(requestDidfinish:)]) {
[self.delegate requestDidfinish:self];
}
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
//
[connection cancel];
self.requestDidErrorBlock(error);
if ([self.delegate respondsToSelector:@selector(requestDidError:)]) {
[self.delegate requestDidError:error];
}
}
@end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
리눅스 입문~컴퓨터 시스템의 하드웨어의 개요와 리눅스의 주요 기능과 그 구조의 개요~별도의 기사에서 각 Linux의 기능인 프로세스 및 메모리 관리 메커니즘에 대한 자세한 내용을 요약합니다. 입력 장치, 네트워크 어댑터를 통해 컴퓨터에서 처리를 수행하도록 요청 프로세스 관리 메모리 관리 장치 조작 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.