美文网首页
6.AFNetworking实现Get和Post方法

6.AFNetworking实现Get和Post方法

作者: 峰子1994 | 来源:发表于2017-10-28 10:00 被阅读23次

前言

AFNetworking其实实现的原理就是使用NSURLSession类,只不过使用对NSURLSession进行了封装,使得我们更加使用起来更加的方便, 其中都是通过AFHTTPSessionManager这个类来实现的!!!

1.AFHTTPSessionManager的Get请求:

 NSMutableDictionary *paramter = [NSMutableDictionary dictionary];
 paramter[@"q"] = @"iOS";
 paramter[@"count"] = @"30";
 [[AFHTTPSessionManager manager]GET:@"https://api.douban.com/v2/user" parameters:paramter
 progress:^(NSProgress * _Nonnull downloadProgress) {
 } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"responseObject:%@",responseObject);
 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error:%@",error);
 }];

2.AFHTTPSessionManager的Post请求:

 NSMutableDictionary *paramer = [NSMutableDictionary dictionary];
 paramer[@"q"] = @"iOS";
 paramer[@"count"] = @"30";
 [[AFHTTPSessionManager manager]POST:@"" parameters:paramer 
  progress:^(NSProgress * _Nonnull uploadProgress) {
  } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"请求成功");
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"请求失败");
  }];

3.网络请求封装类:
NetWookTool.h

#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>
typedef void(^successBlock)(id response);
typedef void(^failureBlock)(NSError *error);
@interface NetWookTool : NSObject <NSCopying>
+(instancetype)shareNetWookTool;
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
@end

NetWookTool.m

#import "NetWookTool.h"
#import <AFNetworking/AFNetworking.h>
//静态的作用是防止外界访问
static NetWookTool *_tool = nil;
@implementation NetWookTool
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _tool = [super allocWithZone:zone];
    });
    return _tool;
}
+(instancetype)shareNetWookTool{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _tool = [[NetWookTool alloc]init];
    });
    return _tool;
}
-(id)copyWithZone:(NSZone *)zone{
    return _tool;
}
// AFHTTPSessionManager的设置
-(AFHTTPSessionManager *)manager{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //HTTPS需要的东西了
    //manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    // json的请求
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    // json的响应
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    //xml的响应
    // manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
    //响应的接受的数据的格式
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/tml",@"application/json",@"text/json", nil];
    return  manager;
}
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
    [[AFHTTPSessionManager manager]GET:url parameters:paramter progress:^(NSProgress * _Nonnull downloadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (responseObject) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (error) {
            failure(error);
        }
    }];
}
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
    [[AFHTTPSessionManager manager]POST:url parameters:paramter progress:^(NSProgress * _Nonnull uploadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (responseObject) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (error) {
            failure(error);
        }
    }];
}
@end

结语: 这个就是我们工作中经常使用的网络请求的封装类,在我们的工作中经常使用,希望能给你带来好处!!!

相关文章

  • 6.AFNetworking实现Get和Post方法

    前言 AFNetworking其实实现的原理就是使用NSURLSession类,只不过使用对NSURLSessio...

  • 原生js实现ajax及get post方法

    @拭目以待:首发于原生js实现ajax及get post方法 ajax原生实现,含 post与get方法。原码如下...

  • HTTP post和get请求的实现

    本文使用HttpClient包实现了HTTP的post和get请求。 · POST · GET

  • js知识点2

    get() 和 post()方法

  • GetPost

    Http 方法:Get/Post 两种最常用的HTTP方法:Get和Post[https://www.jiansh...

  • iOS网络请求基础知识

    get请求 post 请求 实现NSURLConnectionDataDelegate代理方法 tip 对数组进行...

  • post+get

    post或者get方法均可以实现,这个时候需要加判断

  • ajax原生兼容

    总结一下JavaScript原生ajax写法 有get和post两种方法,写法差异不大 POST方法: GET方法

  • requests

    requests.get()requests.post() 默认的get和post方法均为status_code为...

  • 2018-10-19——请求方法

    常见的请求方法有两种:GET和POST GET和POST请求方法有如下区别: ①GET请求中的参数包含着URL里面...

网友评论

      本文标题:6.AFNetworking实现Get和Post方法

      本文链接:https://www.haomeiwen.com/subject/wxvjpxtx.html