ios之网络数据下载和JSON解析

ios之网络数据下载和JSON解析

简介

  在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据以及如何解析下载下来的JSON的数据格式,以及如何显示数据和图片的异步下载显示

  涉及到的知识应用:

  1.NSURLConnection异步下载和封装

  2.JSON格式和JSON格式解析

  3.数据显示和使用SDWebImage异步显示图片

内容

  1网络下载基础知识介绍

    什么是网络应用?

      一般情况下,iPhone上绝大多数的应用都需要网络才能运行,就是网络应用。

    网络应用的程序结构

      在网络上运行一个程序为应用提供数据, 或者提供服务, 那么这个网络应用一般称为客户端, 而网络上运行的服务称为服务端。

    常见的网络接口形式

                 iOS网络应用常见的数据接口一般都是HTTP形式的URL地址。

    界面开发的一般流程

      下载数据  NSURLConnection+URL 

      解析数据  JSON/XML

      建立数据模型model

      创建视图 使用视图显示

                 tableView +定制cell

                 图片异步下载SDWeblmage

  2NSURLConnection的使用

    NSString同步下载数据

    

NSError *error = nil;
    NSURL *url = [NSURL URLWithString:urlString];
    NSString *content = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    if (error==nil) {
        NSLog(@"content = %@",content);
    }
    else
    {
        NSLog(@"下载失败");
    }

  

    NSURLConnection 同步下载

NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSError *error = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
    if(error == nil)
    {
        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"str = %@",str);
    }
    else
    {
        NSLog(@"下载失败");
    }

  

    NSURLConnection 异步下载

    

@property (copy,nonatomic) NSMutableData *data;

//作用:
//  传入网址, 下载完成执行后执行target对象中action方法
-(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action;


@interface ZJHttpRequest ()<NSURLConnectionDataDelegate>
{
    NSURLConnection *_connection;
    NSString *_url;
    id _target;
    SEL _action;
}
@end

@implementation ZJHttpRequest
//作用:
//  传入网址, 下载完成执行后执行target对象中action方法
-(void)requestWithUrl:(NSString *)url
               target:(id)target
               action:(SEL)action
{
    _url = url;
    _target = target;
    _action = action;
    
    //发起URL请求
    _data = [[NSMutableData alloc] init];
    _connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:self startImmediately:YES];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [_data appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    //下载完成了, 执行保存的方法
    if(_target && [_target respondsToSelector:_action])
    {
        [_target performSelector:_action withObject:self];
    }
    
}

  

  3JSON格式说明和格式化工具

    

JSON格式

    {

        "count":20,

        "data":[

            "zhangsan",

            "lisi",

            "wangwu"

        ]

    }

    []    表示数组,对应NSArray

    ,     表示并列的数据

    {}    表示字典,对应NSDictionary

    :     表示键值对

    "xxx"  表示字符串,对应NSString

    20    对应NSNumber

  4一个完成页面的实现(包含model的创建,SDWebImage的使用)

原文地址:https://www.cnblogs.com/gdwcz/p/4384515.html