iOS 网络解析 -- 简单的JSON解析(包含AFNetworking、MJExtension的简单实用)

      对于现在互联网时代来说,一个没有网络请求的应用通常是没有生命的,现在的应用,几乎所有的应用都需要用到网络编程,比如美团、大众点评】嘀嘀打车、微信;只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、更能持久;如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将会被淘汰。、

      此程序涉及到的知识点:

        (1)AFNetworking、MJExtension库的使用 

        (2)基类的使用(其实就是继承)

        (3)MVC模式

        (4)封装网络请求


     下图是效果图(适配所有屏幕)


     首先是封装网络请求       

     很多时候网络请求会使用第三方框架,AFNetworking、ASIHTTPRequest,在一个项目中到处都要用到网络请求,使用第三方框架有很强的依赖性,如果别人的库一更新我们也要跟着更新,维护起来的时候麻烦,所以一般会自己先封装网络请求,当更新的时候, 只要更新这一处就行了。

声明

// 封装网络请求
#import <Foundation/Foundation.h>

@interface SeptNetWorkTool : NSObject

// url 请求的url  params: 请求的参数
+ (void)POST:(NSString *)url params:(NSDictionary *)params success:(void (^)(id responseObj))success failure:(void (^)(NSError *error))failure;

@end


实现

#import "SeptNetWorkTool.h"

#import "AFNetworking.h"

@implementation SeptNetWorkTool

+ (void)POST:(NSString *)url params:(NSDictionary *)params
     success:(void (^)(id responseObj))success
     failure:(void (^)(NSError *error))failure
{
    // 1.获取请求管理者
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    // 2.发生POST请求
    // 2.发送POST请求
    [manager POST:url parameters:params
        success:^(AFHTTPRequestOperation *operation, id responseObj) {
          if (success) {
              success(responseObj);
          }
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          if (failure) {
              failure(error);
          }
      }];
}

@end


其次是发送网络请求

- (void)sendPostRequest:(NSString *)text   // test是输入框中的text
{
    NSString *mStrURL = [NSString string];
    
    // 这里仅仅是为了第一次运行程序显示有数据(无实际意义)
    if (text == nil) {
        mStrURL = [NSString stringWithFormat:@"%@", TestUrl];
        
    }else {
        mStrURL = [NSString stringWithFormat:URLSTR, APPKEY, text];
    }
    
    // 封装请求参数
    NSMutableArray *mArray = [NSMutableArray array];
    
    [SeptNetWorkTool POST:mStrURL params:nil success:^(id responseObj) {
        
        NSDictionary *dataDict = responseObj[@"result"];
        
        for (NSDictionary *dict in dataDict[@"data"]) {
            
            // 没有使用MJExtension框架
            AFCaipuData *mAFdata = [[AFCaipuData alloc] initWithDictionary:dict];
            
            // 使用了MJExtension框架(其实在这里看不出使用MJExtension的方便,因为代码都是一句,这个只能在数据模型中才能看出方便 PS:数据模型AFCaipuData)
            MJCaipuData *mMJdata = [MJCaipuData objectWithKeyValues:dict];
            
            [mArray addObject:mMJdata];
        }
        
        _caipuArray = mArray;
        
        [self.tabView reloadData];
        
    } failure:^(NSError *error) {
        NSLog(@"----error -- %@", error);
    }];
}


button按钮的点击事件

#pragma mark =========== 确定按钮的点击事件 ===========
- (IBAction)sureOnClick:(UIButton *)sender
{
    // URLHostAllowedCharacterSet : 返回一个字符集包含在URL的主机部分允许的字符。
    NSString *mStr1 = [self.textField.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
    
    // 重新获取数据
    [self sendPostRequest:mStr1];
    
    // 让文本框退出编辑
    [self.textField endEditing:YES];
}






        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值