WHNetwork 2.0.0

WHNetwork 2.0.0

Maintained by wuhao.



WHNetwork 2.0.0

  • By
  • wuhao

WHNetwork

最新版不能使用pod。 直接把WHNetwork拖入工程,配置好接口直接使用。 配置使用方法如下。

1. 在WHNetApi.h 中定义主机

#define kBaseUrl @"http://httpbin.org/"

2. 在WHNetApi.h 中定义接口。

在'方法列表' 枚举 WHApi 中定义接口名

/** 配置Api */
typedef NS_ENUM(NSUInteger, WHApi) {
    WHApiTest,
    WHApiTest2,
};

3. 在WHNetApi.m 中配置接口

#pragma mark -
#pragma mark - 请求路径
/******************************** 请求路径 ************************************/

- (void)configPath {
    paths = @{
              
              ApiKey(WHApiTest) : @"get", 
              ApiKey(WHApiTest2): @"post",
              
              };
}

#pragma mark -
#pragma mark - 请求方式: GET/POST (不填的话默认POST)
/***************************** 请求方式: GET/POST ********************************/


- (void)configRequestMethod {
    requestMethods = @{
                       
                       ApiKey(WHApiTest) : @(WHRequestMethodGet),
                       
                       };
}

4. 调用接口

直接通过类方法调用。

// 根据定义的API发起请求
[WHNetwork startWithApi:WHApiTest parameters:@{@"123" : @"123"} success:^(id  _Nonnull aResponseObject, WHNetRequest * _Nonnull request) {
            
} failure:^(NSError * _Nonnull error, WHNetRequest * _Nonnull request) {
            
}];

5. 在 WHNetRequest.m 中定义公用参数

直接在下面的方法中定义。

// 下面的@{@"default param" : @"default param"}就是公用参数,每个请求都会携带
- (void)setRequestParameters:(NSDictionary *)requestParameters {
    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:@{@"default param" : @"default param"}];
    [mutableDict addEntriesFromDictionary:requestParameters];
    _requestParameters = mutableDict.copy;
}

6. 全局配置 WHNetConfig.h

WHNetConfig.h 是一个单例,用来设置网络请求的基本配置(有默认值),例如超时时间等。修改其属性值,即修改了所有网络请求的默认配置。

// 网络模块是否打印,默认打印
@property (nonatomic, assign) BOOL enableLog;

// 网络请求状态提示,默认打开
@property (nonatomic, assign) BOOL openIndicator;

// GET/POST,默认POST
@property (nonatomic, assign) WHRequestMethod method;

// 超时时间,默认30秒
@property (nonatomic, assign) NSTimeInterval timeoutInterval;

// 缓存策略,默认不缓存
@property (nonatomic, assign) WHRequestCachePolicy cachepolicy;

// 请求优先级,默认常规
@property (nonatomic, assign) WHRequestPriority priority;

// 请求反序列化,默认HTTP
@property (nonatomic, assign) WHRequestSerializer requestSerializerType;

// 响应反序列化,默认JSON
@property (nonatomic, assign) WHResponseSerializer responseSerializerType;

// 重置配置
- (void)resetConfig;

7. 自定义Request

如果不想通过api的方式发起请求,也可以自定义网络请求。

7.1. 创建request
 WHNetRequest *request = [[WHNetRequest alloc] init]
 可以自定义一些基本的网络配置,例如超时时间等
 request.timeoutInterval = 60;
 
7.2. 根据请求类型设置属性
 
    7.2.1 普通网络请求:
    requtest.urlString(必须)接口url
    requtest.method(必须,默认GET)请求方式
    requtest.requestParameters(可选)参数
    注意:!!!
    普通网络请求不可设置uploadImage,localFilePath,downloadedPath这三个与上传或下载有关的属性
 
    7.2.2 上传图片:
    requtest.urlString(必须)接口url
    request.uploadName(必须)服务器上传字段 name
    request.uploadImage(必须)上传的图片
    request.uploadedImageName(可选)上传图片到服务器的名称。如果不传,默认使用当前时间命名
    request.requestParameters(可选)参数
 
    7.2.3 上传文件
    requtest.urlString(必须)接口url
    request.uploadName(必须)服务器上传字段 name
    requtest.localFilePath(必须)将要上传文件的本地路径
    request.requestParameters(可选)参数
 
    7.2.4 下载
    requtest.urlString(必须)将要下载的文件url
    requtest.downloadedPath(可选)本地保存文件路径(默认在Document路径下Download中)
 
7.3. 发起网络请求
自定义好request之后,通过manager中的startWithRequest方法发起请求。
- (NSNumber *)startWithRequest:(YWNetworkRequest *)request Success:(YWNetworkSuccess)successHandler Failure:(YWNetworkFailure)failureHandler;

直接通过类方法调用,接口方法如下

/**
 根据Api发起一个网络请求
 内部使用默认的网络配置
 
 @param api Api
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)startWithApi:(WHApi)api
                parameters:(NSDictionary *)parameters
                   success:(WHNetSuccess)successHandler
                   failure:(WHNetFailure)failureHandler;


/**
 发起自定义Request的网络请求 WHNetRequest有根据Api的构造方法
 可以在request中自定义请求配置,例如超时时间等
 
 @param request 自定义的request
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)startWithRequest:(WHNetRequest *)request
                       success:(WHNetSuccess)successHandler
                       failure:(WHNetFailure)failureHandler;


/**
 根据api上传单张图片
 在WHNetApi.m中配置好信息
 
 @param api 上传图片api
 @param image 上传的图片
 @param name 服务器上传字段
 @param imageType 图片类型 PNG/JPG
 @param scale 缩放比例 0.0 ~ 1.0 (1.0代表不缩放)
 @param serverImageName 上传到服务器之后的名称,只需传入名称,不用后缀。如果不传,默认使用当前时间命名
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)uploadImageWith:(WHApi)api
                        image:(UIImage *)image
                         name:(NSString *)name
                    imageType:(WHUploadImageType)imageType
                        scale:(CGFloat)scale
              serverImageName:(NSString *)serverImageName
                   parameters:(NSDictionary *)parameters
                      success:(WHNetSuccess)successHandler
                      failure:(WHNetFailure)failureHandler;

/**
 根据api批量上传图片
 在WHNetApi.m中配置好信息
 
 @param api 上传图片api
 @param images 要上传的图片数组
 @param name 服务器上传字段
 @param imageType 上传图片类型 PNG/JPG
 @param scale 缩放比例
 @param serverImageNames 上传到服务器之后的名称数组,只需传入名称,不用后缀。如果不传,默认使用当前时间命名
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 */
+ (void)uploadImagesWith:(WHApi)api
                  images:(NSArray<UIImage *> *)images
                    name:(NSString *)name
               imageType:(WHUploadImageType)imageType
                   scale:(CGFloat)scale
        serverImageNames:(NSArray<NSString *> *)serverImageNames
              parameters:(NSDictionary *)parameters
                 success:(WHNetSuccess)successHandler
                 failure:(WHNetFailure)failureHandler;


/**
 根据Api上传文件
 在WHNetApi.m中配置好信息
 
 @param api 上传文件的api
 @param localFilePath 要上传文件的本地路径
 @param name 服务器上传字段
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)uploadFileWith:(WHApi)api
               localFilePath:(NSString *)localFilePath
                        name:(NSString *)name
                  parameters:(NSDictionary *)parameters
                     success:(WHNetSuccess)successHandler
                     failure:(WHNetFailure)failureHandler;



/**
 下载
 
 @param URL 下载的url
 @param localFilePath 下载到的路径(可为nil,默认在Document目录下的Download中)
 @param progress 进度
 @param successHandler 成功回调,block中的参数为存储路径
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)downloadWithURL:(NSString *)URL
                localFilePath:(NSString *)localFilePath
                     progress:(WHNetProgress)progress
                      success:(void(^)(NSString *downloadedFilePath, WHNetRequest *request))successHandler
                      failure:(WHNetFailure)failureHandler;


/**
 GET请求
 
 @param URL 请求域名
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)GET:(NSString *)URL
       parameters:(id)parameters
          success:(WHNetSuccess)successHandler
          failure:(WHNetFailure)failureHandler;


/**
 POST请求
 
 @param URL 请求域名
 @param parameters 参数
 @param successHandler 成功回调
 @param failureHandler 失败回调
 @return 请求ID
 */
+ (NSNumber *)POST:(NSString *)URL
        parameters:(id)parameters
           success:(WHNetSuccess)successHandler
           failure:(WHNetFailure)failureHandler;


/**
 根据请求ID取消请求
 
 @param requestID 请求ID
 */
+ (void)stopWithRequestID:(NSNumber *)requestID;


/**
 取消所有网络请求
 */
+ (void)stopAllRequest;


/**
 监听网络状态
 
 @param callback 网络状态的回调
 */
+ (void)netStatus:(NetStatusBlock)callback;