@implementation AFClient
- (instancetype)getHttpClient
{
static AFClient *client = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
client = [[AFClient alloc] initWithBaseURL:[NSURL URLWithString:BASEURL]];
client.responseSerializer = [AFHTTPResponseSerializer serializer];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.allowInvalidCertificates = YES;
client.securityPolicy = securityPolicy;
client.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil ,nil];
});
return client;
}
@end
//
// BHttpClient.h
// Soufu580
//
// Created by Cloud on 15/12/16.
// Copyright ? 2015年 Soufu580. All rights reserved.
//
import <Foundation/Foundation.h>
@interface HttpUtil : NSObject
+(void) httpGet:(NSString )urlPath param:(NSDictionary ) dict finish:(void (^) (NSData date, NSDictionary obj,NSError error)) cb;
+(void) httpPost:(NSString )urlPath param:(NSDictionary ) dict finish:(void (^) (NSData date, NSDictionary obj,NSError error)) cb;
@end
//
// BHttpClient.m
// Soufu580
//
// Created by Cloud on 15/12/16.
// Copyright ? 2015年 Soufu580. All rights reserved.
//
import "HttpUtil.h"
import "AFNetworking.h"
include "NsUtil.h"
import "AFClient.h"
import "BaseModel.h"
static BOOL isFirst = NO;
static BOOL canCHeckNetwork = NO;
@implementation HttpUtil
+(void) httpGet:(NSString )urlpath param:(NSDictionary )dict finish:(void (^)(NSData ,NSDictionary obj, NSError *))cb{
//1..檢查網絡連接(蘋果公司提供的檢查網絡的第三方庫 Reachability)
//AFN 在 Reachability基礎上做了一個自己的網絡檢查的庫, 基本上一樣
[self checkNetWork];
//只能在監聽完善之后才可以調用
BOOL isOK = [[AFNetworkReachabilityManager sharedManager] isReachable];
//BOOL isWifiOK = [[AFNetworkReachabilityManager sharedManager] isReachableViaWiFi];
//BOOL is3GOK = [[AFNetworkReachabilityManager sharedManager]isReachableViaWWAN];
//網絡有問題
if(isOK == NO && canCHeckNetwork == YES){
NSError *error = [NSError errorWithDomain:@"網絡錯誤" code:100 userInfo:nil];
cb(nil, nil,error);
return;
}
//2..實現解析
// AFHTTPSessionManager manager = [AFHTTPSessionManager manager];
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[[AFClient getHttpClient] GET:urlpath parameters:dict success:^(NSURLSessionDataTask task, id responseObject) {
//成功 cb是對方傳遞過來的對象 這里是直接調用
NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
cb(responseObject, [NsUtil replaceUnicode:[NsUtil DataTOjsonString:obj]],nil);
// cb(responseObject, [self replaceUnicode:[self DataTOjsonString:@""]],nil);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
//失敗
cb(nil, nil ,error);
}];
};
+(void) httpPost:(NSString )urlpath param:(NSDictionary )dict finish:(void (^)(NSData ,NSDictionary obj, NSError *))cb{
//1..檢查網絡連接(蘋果公司提供的檢查網絡的第三方庫 Reachability)
//AFN 在 Reachability基礎上做了一個自己的網絡檢查的庫, 基本上一樣
[self checkNetWork];
//只能在監聽完善之后才可以調用
BOOL isOK = [[AFNetworkReachabilityManager sharedManager] isReachable];
//BOOL isWifiOK = [[AFNetworkReachabilityManager sharedManager] isReachableViaWiFi];
//BOOL is3GOK = [[AFNetworkReachabilityManager sharedManager]isReachableViaWWAN];
//網絡有問題
if(isOK == NO && canCHeckNetwork == YES){
NSError *error = [NSError errorWithDomain:@"網絡錯誤 " code:100 userInfo:nil];
cb(nil, nil,error);
return;
}
//2..實現解析
// AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[[AFClient getHttpClient] POST:urlpath parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {
//成功 cb是對方傳遞過來的對象 這里是直接調用
// NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
options:NSJSONReadingMutableContainers
error:&err];
BaseModel *baseModel = [[BaseModel alloc] initWithDictionary:dic];
NSLog(@"basenaem: %@",baseModel.msg);
//cb(responseObject, [NsUtil replaceUnicode:[NsUtil DataTOjsonString:obj]],nil);
// cb(responseObject, [self replaceUnicode:[self DataTOjsonString:@""]],nil);
} failure:^(NSURLSessionDataTask task, NSError error) {
//失敗
cb(nil, nil ,error);
}];
};
+(BOOL ) checkNetWork{
if (isFirst == NO) {
//網絡只有在startMonitoring完成后才可以使用檢查網絡狀態
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
canCHeckNetwork = YES;
}];
isFirst = YES;
}
return canCHeckNetwork;
}
@end</pre>