码迷,mamicode.com
首页 > 移动开发 > 详细

ios开发网络学习AFN框架的使用一:get和post请求

时间:2016-09-12 23:50:04      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

#import "ViewController.h"
#import "AFNetworking.h"

@interface ViewController ()

@end

@implementation ViewController

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self post];
}

-(void)get
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    //http://120.25.226.186:32812/login?username=123&pwd=122&type=JSON
    //
    
    NSDictionary *paramDict = @{
                                @"username":@"520it",
                                @"pwd":@"520it",
                                @"type":@"JSON"
                                };
    //2.发送GET请求
    /*
     第一个参数:请求路径(不包含参数).NSString
     第二个参数:字典(发送给服务器的数据~参数)
     第三个参数:progress 进度回调
     第四个参数:success 成功回调
                task:请求任务
                responseObject:响应体信息(JSON--->OC对象)
     第五个参数:failure 失败回调
                error:错误信息
     响应头:task.response
     */
    [manager GET:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"%@---%@",[responseObject class],responseObject);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"请求失败--%@",error);
    }];
}
-(void)post
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    NSDictionary *paramDict = @{
                                @"username":@"520it",
                                @"pwd":@"520",
                                @"type":@"JSON"
                                };
    //2.发送GET请求
    /*
     第一个参数:请求路径(不包含参数).NSString
     第二个参数:字典(发送给服务器的数据~参数)
     第三个参数:progress 进度回调
     第四个参数:success 成功回调
        task:请求任务
        responseObject:响应体信息(JSON--->OC对象)
     第五个参数:failure 失败回调
        error:错误信息
     响应头:task.response
     */
    [manager POST:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"%@---%@",[responseObject class],responseObject);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"请求失败--%@",error);
    }];
}
@end

 

```objc

AFN结构体

    - NSURLConnection

        + AFURLConnectionOperation(已经被废弃)

        + AFHTTPRequestOperation(已经被废弃)

        + AFHTTPRequestOperationManager(封装了常用的 HTTP 方法)(已经被废弃)

            * 属性

                * baseURL :AFN建议开发者针对 AFHTTPRequestOperationManager 自定义个一个单例子类,设置 baseURL, 所有的网络访问,都只使用相对路径即可

                * requestSerializer :请求数据格式/默认是二进制的 HTTP

                * responseSerializer :响应的数据格式/默认是 JSON 格式

                * operationQueue

                * reachabilityManager :网络连接管理器

            * 方法

                * manager :方便创建管理器的类方法

                * HTTPRequestOperationWithRequest :在访问服务器时,如果要告诉服务器一些附加信息,都需要在 Request 中设置

                * GET

                * POST

 

    - NSURLSession

        + AFURLSessionManager

        + AFHTTPSessionManager(封装了常用的 HTTP 方法)

            * GET

            * POST

            * UIKit + AFNetworking 分类

            * NSProgress :利用KVO

 

    - 半自动的序列化&反序列化的功能

        + AFURLRequestSerialization :请求的数据格式/默认是二进制的

        + AFURLResponseSerialization :响应的数据格式/默认是JSON格式

    - 附加功能

        + 安全策略

            * HTTPS

            * AFSecurityPolicy

        + 网络检测

            * 对苹果的网络连接检测做了一个封装

            * AFNetworkReachabilityManager

 

建议:

可以学习下AFN对 UIKit 做了一些分类, 对自己能力提升是非常有帮助的

```

- 0.2 AFN的基本使用

 

(1)发送POST请求的方式

```objc

-(void)post

{

    //1.创建会话管理者

    //AFHTTPSessionManager内部是基于NSURLSession实现的

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

 

    //2.创建参数

    NSDictionary *dict = @{

                           @"username":@"520it",

                           @"pwd":@"520it",

                           };

 

    //3.发送POST请求

    /*

     http://120.25.226.186:32812/login?username=ee&pwd=ee&type=JSON

     第一个参数:NSString类型的请求路径,AFN内部会自动将该路径包装为一个url并创建请求对象

     第二个参数:请求参数,以字典的方式传递,AFN内部会判断当前是POST请求还是GET请求,以选择直接拼接还是转换为NSData放到请求体中传递

     第三个参数:进度回调 此处为nil

     第四个参数:请求成功之后回调Block

     第五个参数:请求失败回调Block

     */

    [manager POST:@"http://120.25.226.186:32812/login" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

 

        //注意:responseObject:请求成功返回的响应结果(AFN内部已经把响应体转换为OC对象,通常是字典或数组)

        NSLog(@"请求成功---%@",responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"请求失败---%@",error);

    }];

}

```

 

ios开发网络学习AFN框架的使用一:get和post请求

标签:

原文地址:http://www.cnblogs.com/cqb-learner/p/5866724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!