3.8.1
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// AFNPhalApiClient.h
|
||||
// PhalApiClientDemo
|
||||
//
|
||||
// Created by Aevit on 15/10/18.
|
||||
// Copyright © 2015年 Aevit. All rights reserved.
|
||||
//
|
||||
|
||||
#import "PhalApiClient.h"
|
||||
#import "AFHTTPRequestOperationManager.h"
|
||||
|
||||
@interface AFNPhalApiClient : PhalApiClient
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// AFNPhalApiClient.m
|
||||
// PhalApiClientDemo
|
||||
//
|
||||
// Created by Aevit on 15/10/18.
|
||||
// Copyright © 2015年 Aevit. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AFNPhalApiClient.h"
|
||||
#import "PhalApiClientFilter.h"
|
||||
|
||||
@implementation AFNPhalApiClient
|
||||
|
||||
#pragma mark - generate a client
|
||||
/**
|
||||
* 生成单例
|
||||
*
|
||||
* @return 单例PhalApiClient
|
||||
*/
|
||||
+ (AFNPhalApiClient*)sharedClient {
|
||||
static AFNPhalApiClient *_sharedClient;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
_sharedClient = [[AFNPhalApiClient alloc] init];
|
||||
});
|
||||
return _sharedClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成非单例
|
||||
*
|
||||
* @return 非单例PhalApiClient
|
||||
*/
|
||||
+ (AFNPhalApiClient*)create {
|
||||
AFNPhalApiClient *client = [[AFNPhalApiClient alloc] init];
|
||||
return client;
|
||||
}
|
||||
|
||||
#pragma mark - request
|
||||
/**
|
||||
* 发起接口请求(POST请求)
|
||||
*
|
||||
* @param completeBlock 请求成功的回调
|
||||
* @param failureBlock 请求失败的回调
|
||||
*
|
||||
* @return 请求实例
|
||||
*/
|
||||
- (id)request:(HttpCompleteBlock)completeBlock failureBlock:(HttpFailureBlock)failureBlock {
|
||||
return [self requestWithFormDataBlock:nil completeBlock:completeBlock failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起接口请求(提交表单)
|
||||
*
|
||||
* @param formDataBlock 表单内容
|
||||
* @param completeBlock 请求成功的回调
|
||||
* @param failureBlock 请求失败的回调
|
||||
*
|
||||
* @return 请求实例
|
||||
*/
|
||||
- (id)requestWithFormDataBlock:(FormDataBlock)formDataBlock completeBlock:(HttpCompleteBlock)completeBlock failureBlock:(HttpFailureBlock)failureBlock {
|
||||
|
||||
if (self.filter) {
|
||||
// 过滤器,可生成签名验证等
|
||||
[self.filter filter:self.service params:self.params];
|
||||
}
|
||||
|
||||
NSString *url = self.host;
|
||||
if (self.service && self.service.length > 0) {
|
||||
// 一般来说,建议service以GET方式写在url里,其他所有参数,统一用POST方式
|
||||
url = [NSString stringWithFormat:@"%@?service=%@", self.host, self.service];
|
||||
}
|
||||
|
||||
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
|
||||
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"text/plain", @"text/json", @"text/xml", nil];
|
||||
manager.requestSerializer.timeoutInterval = self.timeout;
|
||||
|
||||
AFHTTPRequestOperation *operation = [manager POST:url parameters:self.params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
||||
if (formDataBlock) {
|
||||
formDataBlock(formData);
|
||||
}
|
||||
} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
|
||||
// 默认以JSON返回,如需其他格式(如XML,请上google搜索"AFNetworking XML"相关资料即可)
|
||||
if (completeBlock) {
|
||||
completeBlock(responseObject);
|
||||
}
|
||||
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
|
||||
if (error.code == NSURLErrorTimedOut) {
|
||||
NSDictionary *timeoutDict = @{@"ret": @408, @"data": @{}, @"msg": @"Request Timeout"};
|
||||
failureBlock(timeoutDict);
|
||||
return ;
|
||||
}
|
||||
if (failureBlock) {
|
||||
failureBlock(error);
|
||||
}
|
||||
}];
|
||||
|
||||
return operation;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user