.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格式请求
QSUAPRequestSerializerHTTP =1,// http格式请求
QSUAPRequestSerializerPropertyList =2,// 属性格式请求
};
typedef NS_OPTIONS(NSInteger, QSUAPResponseSerializer){
QSUAPResponseSerializerJSON =0,// json接收格式
QSUAPResponseSerializerHTTP =1,// http接收格式
QSUAPResponseSerializerXML =2,// XML接收格式
QSUAPResponseSerializerPropertyList =3,// 属性接收格式
QSUAPResponseSerializerIMAGE =4,// 图片接收格式
QSUAPResponseSerializerCompound =5,//
};
// 请求数据格式
@property(nonatomic, assign) QSUAPRequestSerializer requestSerializer;
// 接收数据格式
@property(nonatomic, assign) QSUAPResponseSerializer responseSerializer;
typedef void(^CallBackBlock)(NSDictionary * dic,NSError * error);
// 请求的回调block
@property(nonatomic, copy)CallBackBlock callBlock;
//@property(nonatomic,)
/***QSUAPRequest初始化单例方法***/
+ (instancetype)shareManager;
/***pos上传封装本类方法***/
+ (instancetype)postWithPath:(NSString*)pathwithParams:(NSDictionary*)dic;
/***更新图片地址,返回图片地址有问题,需要进行处理**/
+ (NSString*)updateImagePathURL:(NSString*)imagePath;
/***post请求通用方法**/
- (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: 此处应该添加一些服务器指定的的请求头信息
//[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---属性设定方法
-(void)setRequestSerializer:(QSUAPRequestSerializer)requestSerializer{
_requestSerializer= requestSerializer;
// QSUAPRequestSerializerJSON = 0, // json格式请求
// QSUAPRequestSerializerHTTP = 1, // http格式请求
// QSUAPRequestSerializerPropertyList = 2, // 属性格式请求
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){
// 在此处拿到数据做你想做的事
// [self.navigationController hideProcessHUD];
// if (json[@"code"] && [json[@"code"] intValue] == 500) {
// [FZToast makeToast:@"数据请求异常,请稍后再试"];
// return;
// }
// NSArray * arr = [YDTouristNewsModel getMainNewsListWithJson:json];
// [weakSelf.dataArray removeAllObjects];
// [weakSelf.dataArray addObjectsFromArray:arr];
// [weakSelf.tableView reloadData];
};
网友评论