zoukankan      html  css  js  c++  java
  • ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类

    从苹果系统自带的请求类,到ASIHttpRequest第三方请求类,再到AFNetWorking第三方请求类,目前只要牵扯到数据请求,基本上都是用AFN,所以,这里纯粹是记录下:

    hRequestTools.h

    #import <Foundation/Foundation.h>
    
    /**
     *  网络请求类型
     */
    typedef NS_ENUM(NSUInteger,HttpRequestType) {
        /**
         *  get请求
         */
        HttpRequestTypeGet = 1,
        /**
         *  post请求
         */
        HttpRequestTypePost = 2
    };
    
    @interface hRequestTools : NSObject
    
    
    /**
     *  发送网络请求
     *
     *  @param URLString   请求的网址字符串
     *  @param parameters  请求的参数
     *  @param type        请求的类型
     *  @param success     请求的结果
     */
    + (void)requestWithURLString:(NSString *)URLString
                      parameters:(id)parameters
                            type:(HttpRequestType)type
                         success:(void (^)(id responseObject))success
                         failure:(void (^)(NSError *error))failure;

    hRequestTools.m

    #pragma mark 封装的请求方法
    + (void)requestWithURLString:(NSString *)URLString
                      parameters:(id)parameters
                            type:(HttpRequestType)type
                         success:(void (^)(id responseObject))success
                         failure:(void (^)(NSError *error))failure
    {
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        manager.responseSerializer = [AFHTTPResponseSerializer serializer];
        manager.requestSerializer.timeoutInterval = 30.0f;
        switch (type) {
            case HttpRequestTypeGet:
            {
                [manager GET:URLString parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
                    
                } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                    
                    if (success) {
                        id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers  error:nil];
                        success(jsons);
                    }
                    
                } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                    if (failure) {
                        failure(error);
                    }
                }];

    }
    break; case HttpRequestTypePost: { [manager POST:URLString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
                    
                } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                    
                    if (success) {
                        id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers  error:nil];
                        success(jsons);
                    }
                    
                } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                    
                    if (failure) {
                        failure(error);
                    }
                    
                }];
    }
    break; default: break; } }

    请求里面如果要加缓存的话,可以和YYCache这个第三方配合使用,

    关于YYCache,可以推荐几个链接:http://www.jianshu.com/p/b8dcf6634fab

  • 相关阅读:
    android java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
    UnsupportOperationException,使用Arrays.asLisvt()报错原因
    android ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hi
    android Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated wi
    android The specified child already has a parent. You must call removeView() on the child's parent f
    python-install-package-C++编译器问题---05
    python-install-package-C++编译器问题---04-微软官网
    python-install-package-C++编译器问题---03
    python-install-package-C++编译器问题---02
    python-install-package-C++编译器问题---01
  • 原文地址:https://www.cnblogs.com/hero11223/p/6757415.html
Copyright © 2011-2022 走看看