.h文件
//
//? QSUAPRequest.h
//? App
//
//? Created by 肖乾帥 on 2023/12/6.
//
#import
//#import "NRUAPRequestDefine.h"
#define SERVER_HTTPNEW? ? ? ? ? ? ? ? @"http://192.168.110.170:8007"
#define IMAGE_HTTP? ? ? ? ? ? ? ? @"http://192.168.110.170:9000"
NS_ASSUME_NONNULL_BEGIN
@interface QSUAPRequest : NSObject
typedef NS_OPTIONS(NSInteger, QSUAPRequestSerializer){
? ? QSUAPRequestSerializerJSON =0,// json格式請(qǐng)求
? ? QSUAPRequestSerializerHTTP =1,// http格式請(qǐng)求
? ? QSUAPRequestSerializerPropertyList =2,// 屬性格式請(qǐng)求
};
typedef NS_OPTIONS(NSInteger, QSUAPResponseSerializer){
? ? QSUAPResponseSerializerJSON =0,// json接收格式
? ? QSUAPResponseSerializerHTTP =1,// http接收格式
? ? QSUAPResponseSerializerXML? =2,// XML接收格式
? ? QSUAPResponseSerializerPropertyList? =3,// 屬性接收格式
? ? QSUAPResponseSerializerIMAGE? =4,// 圖片接收格式
? ? QSUAPResponseSerializerCompound? =5,//
};
// 請(qǐng)求數(shù)據(jù)格式
@property(nonatomic, assign) QSUAPRequestSerializer requestSerializer;
// 接收數(shù)據(jù)格式
@property(nonatomic, assign) QSUAPResponseSerializer responseSerializer;
typedef void(^CallBackBlock)(NSDictionary * dic,NSError * error);
// 請(qǐng)求的回調(diào)block
@property(nonatomic, copy)CallBackBlock callBlock;
//@property(nonatomic,)
/***QSUAPRequest初始化單例方法***/
+ (instancetype)shareManager;
/***pos上傳封裝本類方法***/
+ (instancetype)postWithPath:(NSString*)pathwithParams:(NSDictionary*)dic;
/***更新圖片地址,返回圖片地址有問(wèn)題,需要進(jìn)行處理**/
+ (NSString*)updateImagePathURL:(NSString*)imagePath;
/***post請(qǐng)求通用方法**/
- (NSURLSessionTask*)POST:(NSString*)pathWithParameter:(NSDictionary*)paramssuccess:(void(^)(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject))successfailure:(void(^)(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror))failure;
@end
NS_ASSUME_NONNULL_END
.m文件
//
//? QSUAPRequest.m
//? App
//
//? Created by 肖乾帥 on 2023/12/6.
//
#import "QSUAPRequest.h"
#import "AFNetworking.h"
@interface QSUAPRequest()
@property(nonatomic, strong) AFHTTPSessionManager * AFManger;
@end
@implementation QSUAPRequest
+ (instancetype)shareManager{
? ? staticQSUAPRequest* _request =nil;
? ? staticdispatch_once_tonceToken;
? ? dispatch_once(&onceToken, ^{
? ? ? ? _request = [[QSUAPRequestalloc]init];
? ? });
? ? return_request;
}
- (instancetype)init{
? ? if(self= [superinit]) {
? ? ? ? self.AFManger = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:SERVER_HTTPNEW]];
? ? ? ? self.AFManger.requestSerializer = [AFJSONRequestSerializer serializer];
//? ? ? ? self.AFManger.requestSerializer = [ serializer];
? ? ? ? //FIXME: 此處應(yīng)該添加一些服務(wù)器指定的的請(qǐng)求頭信息
?? ? ? ? ? ? ? //[self.AFManager.requestSerializer setValue:@"" forHTTPHeaderField:@""];
? ? ? ? self.AFManger.responseSerializer = [AFHTTPResponseSerializer serializer];
? ? ? ? self.AFManger.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/plain",@"text/html", nil];
? ? }
? ? return self;
}
+ (instancetype)postWithPath:(NSString*)pathwithParams:(NSDictionary*)dic{
? ? QSUAPRequest * requst = [QSUAPRequest shareManager];
? ? [requst.AFMangerPOST:pathparameters:dicheaders:nilprogress:nilsuccess:^(NSURLSessionTask* task,idresponse){
? ? ? ? id? json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:nil];
? ? ? ? NSError* err = [[NSErroralloc]init];
? ? ? ? if ([json isKindOfClass:[NSDictionary class]]) {
? ? ? ? ? ? requst.callBlock(json, err);
? ? ? ? }else{
? ? ? ? ? ? requst.callBlock(@{@"code":@500}, err);
? ? ? ? }
? ? ? ? }failure:^(NSURLSessionTask* task,NSError* error){
? ? ? ? ? ? requst.callBlock(@{@"code":@500}, error);
? ? ? ? }];
? ? returnrequst;
}
- (instancetype)callBack:(CallBackBlock)callBack{
? ? QSUAPRequest * requst = [QSUAPRequest shareManager];
? ? callBack = requst.callBlock;
? ? returnrequst;
}
- (NSURLSessionTask*)POST:(NSString*)pathWithParameter:(NSDictionary*)paramssuccess:(void(^)(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject))successfailure:(void(^)(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror))failure{
? ? return [self.AFManger POST:path parameters:params headers:@{} progress:nil success:success failure:failure];
}
+ (NSString*)updateImagePathURL:(NSString*)imagePath{
? ? if ([imagePath containsString:@"http://192.168.1.189:9000"]) {
? ? ? ? return [[imagePath stringByReplacingOccurrencesOfString:@"http://192.168.1.189:9000" withString:IMAGE_HTTP] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
? ? }
? ? return [[imagePath stringByReplacingOccurrencesOfString:@"http://0.0.0.0:0" withString:IMAGE_HTTP] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
#pragma mark---屬性設(shè)定方法
-(void)setRequestSerializer:(QSUAPRequestSerializer)requestSerializer{
? ? _requestSerializer= requestSerializer;
//? ? QSUAPRequestSerializerJSON = 0, // json格式請(qǐng)求
//? ? QSUAPRequestSerializerHTTP = 1, // http格式請(qǐng)求
//? ? QSUAPRequestSerializerPropertyList = 2, // 屬性格式請(qǐng)求
? ? switch(requestSerializer) {
? ? ? ? case QSUAPRequestSerializerJSON:
? ? ? ? {
? ? ? ? ? ? self.AFManger.requestSerializer = [AFJSONRequestSerializer serializer];
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPRequestSerializerHTTP:
? ? ? ? {
? ? ? ? ? ? self.AFManger.requestSerializer = [AFHTTPRequestSerializer serializer];
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPRequestSerializerPropertyList:
? ? ? ? {
? ? ? ? ? ? self.AFManger.requestSerializer = [AFPropertyListRequestSerializer serializer];
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? break;
? ? }
}
-(void)setResponseSerializer:(QSUAPResponseSerializer)responseSerializer{
? ? _responseSerializer= responseSerializer;
//? ? QSUAPResponseSerializerJSON = 0, // json接收格式
//? ? QSUAPResponseSerializerHTTP = 1, // http接收格式
//? ? QSUAPResponseSerializerXML? = 2, // XML接收格式
//? ? QSUAPResponseSerializerPropertyList? = 3, // 屬性接收格式
//? ? QSUAPResponseSerializerIMAGE? = 4, // 圖片接收格式
//? ? QSUAPResponseSerializerCompound? = 5, //
? ? switch(responseSerializer) {
? ? ? ? case QSUAPResponseSerializerJSON:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFJSONResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPResponseSerializerHTTP:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFHTTPResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPResponseSerializerXML:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFXMLParserResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPResponseSerializerPropertyList:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFPropertyListResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPResponseSerializerIMAGE:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFImageResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case QSUAPResponseSerializerCompound:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? self.AFManger.responseSerializer = [AFCompoundResponseSerializer serializer];
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? break;
? ? }
}
@end
使用方法:eg
?NSString * pathstr = @"/action/test";
? ? ? NSDictionary* params =@{@"data":@{}};
?[QSUAPRequest postWithPath:pathstr withParams:params].callBlock= ^(NSDictionary* json,NSError* error){
// 在此處拿到數(shù)據(jù)做你想做的事
//? ? ? ? [self.navigationController hideProcessHUD];
//? ? ? ? if (json[@"code"] && [json[@"code"] intValue] == 500) {
//? ? ? ? ? ? [FZToast makeToast:@"數(shù)據(jù)請(qǐng)求異常艰亮,請(qǐng)稍后再試"];
//? ? ? ? ? ? return;
//? ? ? ? }
//? ? ? ? ? ? NSArray * arr = [YDTouristNewsModel getMainNewsListWithJson:json];
//? ? ? ? ? ? [weakSelf.dataArray removeAllObjects];
//? ? ? ? ? ? [weakSelf.dataArray addObjectsFromArray:arr];
//? ? ? ? ? ? [weakSelf.tableView reloadData];
? ? };