设为首页 加入收藏

TOP

【原】iOS学习之第三方-AFNetworking1.3.0(一)
2017-10-13 10:28:31 】 浏览:1354
Tags:iOS 习之 第三方 -AFNetworking1.3.0

将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方法)

AFNetworking简介

  • AFNetworking是一个 在iOS开发中 使用非常多网络开源库,是一个轻量级的网络请求API类库。

  • 适用于iOS以及Mac OS X。它构建于在(Apple iOS开发文档) NSURLSession ,  NSOperation , 以及其他熟悉的Foundation技术之上,核心代码: AFHTTPSessionManager

  • 它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松。

  • 官方链接http://cocoadocs.org/docsets/AFNetworking/1.3.0/

AFHTTPSessionManager

 AFHTTPSessionManager是核心网络请求的管理类,用于管理 GET 和 POST 请求

 AFHTTPSessionManager对象的声明和懒加载代码:

#import "ViewController.h"

// 网络的请求头文件
#import <AFNetworking/AFNetworking.h>

@interface ViewController ()

/// 用于网络请求的session对象
@property (nonatomic, strong) AFHTTPSessionManager *session;

@end

@implementation ViewController
// 懒加载
- (AFHTTPSessionManager *)session
{
    if (!_session) {
        _session = [AFHTTPSessionManager manager];
        // 设置请求接口回来的时候,支持什么类型的数据
        _session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/java script",@"application/x-json",@"text/html", nil];
    }
    return _session;
}

@end

AFNetworking进行网络监测

 在进行网络监测的时候,首先应该先判断网络监测是否打开,如果没有打开,先要打开监测

- (void)startMonitoring; // 打开网络监测
- (void)stopMonitoring; // 关闭网络监测

 接下来就判断当前的网络状态,AFNetworking有几种不同的网络状态

// 几种不同的网络状态
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
    AFNetworkReachabilityStatusUnknown          = -1, // 当前网络处于未知状态,手机没有信号
    AFNetworkReachabilityStatusNotReachable     = 0, // 当前网络处于未连接状态,手机没有开流量或开WiFi
    AFNetworkReachabilityStatusReachableViaWWAN = 1, // 手机流量网络
    AFNetworkReachabilityStatusReachableViaWiFi = 2, // WiFi状态
};

 实例代码:

#pragma mark - 网络监测按钮的响应方法
- (IBAction)networkMonitoringAction:(UIButton *)sender
{
    if (!isOPen) {
        // 打开网络监测的方法
        [[AFNetworkReachabilityManager sharedManager] startMonitoring];
        isOPen = YES;
    } else {
        // 关闭网络监测
        [[AFNetworkReachabilityManager sharedManager] stopMonitoring];
        isOPen = NO;
    }
    
    // 接下来判断当前是WiFi状态还有3g状态,网络不可用状态
    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"当前网络处于未知状态,手机没有信号");
                break;
                
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"当前网络处于未连接状态,手机没有开流量或开WiFi");
                break;
                
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"手机流量网络");
                break;
                
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WiFi状态");
                break;
                
            default:
                break;
        }
    }];
}

AFNetworking的GET请求

 AFNetworking1.3.0 不再想以前一样一个 GET 请求需要很多的类参与,这里这需要一个 AFHTTPSessionManager 的方法就可以完成

 方法:

- (NSURLSessionDataTask *)GET:(NSString *)URLString // get请求的网址
                   parameters:(id)parameters // 拼接的参数
                     progress:(void (^)(NSProgress * _Nonnull))downloadProgress // 下载的进度
                      success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success // 请求成功
                      failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure // 请求失败

 实例代码:

#pragma mark - GET请求的响应方法
- (IBAction)getRequestAction:(id)sender
{
    [self.session GET:@"http://api.yhouse.com/m/city/dynmiclist" // get请求的
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【代码笔记】iOS-首页3张图片变化 下一篇iOS指南针

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目