zoukankan      html  css  js  c++  java
  • AFNetworking3.0使用简介

    注意到咱们集成的版本为3.0.4。

    下面的类已从AFNetworking 3.0中废弃:

    • AFURLConnectionOperation
    • AFHTTPRequestOperation
    • AFHTTPRequestOperationManager

    以及很多修改,有兴趣的可以了解一下。

    下面开始实践一下:

    1. // 请求的参数
    2. NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"20131129", @"date", @"1", @"startRecord", @"5", @"len", @"1234567890", @"udid", @"Iphone", @"terminalType", @"213", @"cid", nil];
    3. // 初始化Manager
    4. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    5. // 不加上这句话,会报“Request failed: unacceptable content-type: text/plain”错误,因为我们要获取text/plain类型数据
    6. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    7. // post请求
    8. [manager POST:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?" parameters:dic constructingBodyWithBlock:^(id _Nonnull formData) {
    9. // 拼接data到请求体,这个block的参数是遵守AFMultipartFormData协议的。
    10. } progress:^(NSProgress * _Nonnull uploadProgress) {
    11. // 这里可以获取到目前的数据请求的进度
    12. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    13. // 请求成功,解析数据
    14. NSLog(@"%@", responseObject);
    15. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
    16. NSLog(@"%@", dic);
    17. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    18. // 请求失败
    19. NSLog(@"%@", [error localizedDescription]);
    20. }];

    如果是Get请求,相比Post请求,少了请求参数,然后只需将post方法改为get方法(也是直接将请求参数拼接在URL后面):

    1. // Get请求
    2. [manager GET:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
    3. // 这里可以获取到目前的数据请求的进度
    4. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    5. // 请求成功,解析数据
    6. NSLog(@"%@", responseObject);
    7. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
    8.  
    9. NSLog(@"%@", dic);
    10. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    11. // 请求失败
    12. NSLog(@"%@", [error localizedDescription]);
    13. }];

     三、总结

    在很多场合,比如我们需要当前网络请求,下载,上传的进度,使用AFNetworking可以省去很多麻烦,还有许多复杂的应用场合,相信它可以让你省事很多。

  • 相关阅读:
    [RxSwift教程]14、其他操作符:delay、materialize、timeout等
    [RxSwift教程]13、连接操作符:connect、publish、replay、multicast
    Java虚拟机类加载机制及双亲委派模式分析
    面试系列-如何设计一个类
    谈谈 MySQL 的 JSON 数据类型
    Java 多线程编程(2-异步中包含同步)
    还堵在高速路上吗?带你进入Scratch世界带你飞
    SQL Server SSIS相关介绍
    SQL Server开启READ_COMMITTED_SNAPSHOT
    SqlServer中select语句引起的死锁
  • 原文地址:https://www.cnblogs.com/luoxiaofu/p/5328063.html
Copyright © 2011-2022 走看看