iOS AFN 封装POST网络请求(AFURLSessionManager)
来源:互联网 发布:php调用接口的方法 编辑:程序博客网 时间:2024/05/16 15:13
//一共四个文件,NetworkModel.h,NetworkModel.m,WebServerAPIModel.h,WebServerAPIModel.m
//NetworkModel中封装了一个POST请求,使用了AFNetworking框架。WebServerAPIModel中封装的上层网络接口.
//singleton.h是一个单例的宏定义,如果没有这个文件,请自己将NetworkModel写成单例吧。。。
#import <Foundation/Foundation.h>
#import "singleton.h"
typedef void(^SuccessHandle)(id responseObject);
typedef void(^FailureHandle)(NSError * error);
@interface NetworkModel : NSObject
single_h(NetworkModel)
- (void)postWithURLString:(NSString *)URLString parameters:(NSMutableDictionary *)parameters successHandle:(SuccessHandle)success failureHandle:(FailureHandle)failure;
@end
#import "NetworkModel.h"
#import "AFNetworking.h"
@interface NetworkModel()
@property (nonatomic,strong) AFURLSessionManager * manager;
@end
@implementation NetworkModel
//单例
single_m(NetworkModel)
- (void)postWithURLString:(NSString *)URLString parameters:(NSMutableDictionary *)parameters successHandle:(SuccessHandle)success failureHandle:(FailureHandle)failure
{
NSMutableURLRequest * request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil];
request.timeoutInterval = 15.0;
NSURLSessionDataTask *dataTask = [self.manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response,id responseObject, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
failure(error);
} else {
NSLog(@"%@ %@", response, responseObject);
success(responseObject);
}
}];
[dataTask resume];
}
#pragma mark - 懒加载
- (AFURLSessionManager *)manager
{
if (_manager == nil) {
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
_manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
}
return _manager;
}
#import <Foundation/Foundation.h>
typedef void(^SuccessCallBack)(NSInteger status,id data, NSString * message,id extra);
typedef void(^FailureCallBack)(NSError * error);
@interface WebServerAPIModel : NSObject
- (void)uploadLocationWithLocations:(NSArray *)locations successHandle:(SuccessCallBack)success failureHandle:(FailureCallBack)failure;
@end
#import "WebServerAPIModel.h"
#import "NetworkModel.h"
#define baseURL @"http://www.xxxx.com/"
@implementation WebServerAPIModel
- (void)uploadLocationWithLocations:(NSArray *)locations successHandle:(SuccessCallBack)success failureHandle:(FailureCallBack)failure
{
NSString * fullURLString = [self fullURLStringFromAPIString:@"App/Ad/ad"];
NSMutableDictionary * parameters = [NSMutableDictionary dictionary];
[[NetworkModel sharedNetworkModel] postWithURLString:fullURLString parameters:parameters successHandle:^(id responseObject) {
NSMutableDictionary * responseDict = responseObject;
NSInteger status = [[responseDict objectForKey:@"status"] integerValue];
if (status == 200) {
//成功
}else
{
//其他情况
}
} failureHandle:^(NSError *error) {
NSLog(@"网络请求失败:%@", error.localizedDescription);
}];
}
#pragma mark - 获取完整地址
/**
* 获取完整地址方法
*
* @param apiString 接口地址
*
* @return 完整地址
*/
- (NSString *)fullURLStringFromAPIString:(NSString *)apiString
{
return [NSString stringWithFormat:@"%@/%@", baseURL, apiString];
}
@end
- iOS AFN 封装POST网络请求(AFURLSessionManager)
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续一) upload表单提交方法
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续二) download下载方法
- ios-Swift中封装AFN中的GET和POST请求
- Swift-利用AFN封装网络请求
- iOS AFN监听网络,封装网络请求 —— HERO博客
- 关于AFN的POST请求,图片上传的二次封装
- iOS开发——post异步网络请求封装
- iOS开发——POST异步网络请求自行封装
- ios自定义异步post网络请求的封装
- iOS开发——post异步网络请求封装
- 封装AFN请求
- ios-OC封装AFN中的GET和POST方法
- AFN请求方式-post请求
- iOS封装网络请求
- iOS--关于AFN和ASI的post登录请求
- ios开发如何封装AFN第三方类库中的http请求
- iOS - 简述二次封装AFN,设置请求头,https安全策略
- 谈谈这几天的感受
- javascript 闭包的特性
- spring注解注入:<context:component-scan>详解
- Leetcode:118. Pascal's Triangle(JAVA)
- MyEclipse中导入jdk源码
- iOS AFN 封装POST网络请求(AFURLSessionManager)
- bootstrap弹出框无法调用问题解决
- KVC and KVO KVB
- 字符编码转换 QT
- 12.leetcode题目12: Integer to Roman
- 查找SAP所有事物代码及用处的几个方法
- Android和Java的垃圾回收
- 【LeetCode】27. Remove Element
- Android性能优化之Splash页