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

iOS开发-HTTP请求

时间:2016-12-03 21:35:51      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:nsdata   term   表示   基于   targe   title   3.x   加载   href   

  • 什么是URL?
    URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL
    URL的基本格式:
    技术分享

  • URL中常见的协议

    (1)HTTP

    超文本传输协议,访问的是远程的网络资源,格式是http://

    http协议是在网络开发中最常用的协议

    (2)file

    访问的是本地计算机上的资源,格式是file://(不用加主机地址)

    (3)mailto

    访问的是电子邮件地址,格式是mailto:

    (4)FTP

    访问的是共享主机的文件资源,格式是ftp://

  • HTTP请求示例,返回JSON
        // 1.拼接一个请求路径,请求参数跟在URL的后面以?隔开,多个参数之间以&符号拼接
        NSString *httpUrl = [NSString stringWithFormat:@"https://free-api.heweather.com/v5/weather?city=%@&key=XXX",[cityName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
      //2.创建一个请求 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:httpUrl]]; //3.将请求的url数据放到NSData对象中(同步请求,在主线程下载数据,执行时间根据数据大小变化) NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //4.解析数据,根据请求返回的类型,这里用IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中 NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:nil];

    异步请求

    // 3.发送异步请求,收到返回数据后回到主线程执行任务
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
            if (connectionError || data == nil) {
                NSLog(@"网络繁忙,请稍后尝试");
            }
            // 4.解析数据,根据请求返回的类型,这里用IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
            NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        }];

     

  • HTTP请求返回XML

    一、XML简单介绍

    XML:全称是Extensible Markup Language,译作“可扩展标记语言”

    跟JSON一样,也是常用的一种用于交互的数据格式,一般也叫XML文档(XML Document)

     

    XML举例

    <videos>

        <video name="小黄人 第01部" length="30" />

        <video name="小黄人 第02部" length="19" />

        <video name="小黄人 第03部" length="33" />

    </videos>

    技术分享

    二、XML的语法

    1.简单说明

    一个常见的XML文档一般由以下部分组成

    文档声明

    元素(Element)

    属性(Attribute)

     

    2.文档声明

    在XML文档的最前面,必须编写一个文档声明,用来声明XML文档的类型

    最简单的声明

    <?xml version="1.0" ?>

     

    用encoding属性说明文档的字符编码

    <?xml version="1.0" encoding="UTF-8" ?>

     

    3.XML语法 – 元素(Element)

    一个元素包括了开始标签和结束标签

    拥有元素内容:<video>小黄人</video>

    没有元素内容:<video></video>

    没有元素内容的简写:<video/> 

     

    一个元素可以嵌套若干个子元素(不能出现交叉嵌套)

    <videos>

        <video>

            <name>小黄人 第01部</name>

             <length>30</length>

        </video>

    </videos>

     

    注意:

    (1)规范的XML文档最多只有1个根元素,其他元素都是根元素的子孙元素

    (2)XML中的所有空格和换行,都会当做具体内容处理

    下面两个元素的内容是不一样的

    第1个

    <video>小黄人</video>

     

    第2个

    <video>

        小黄人

    </video>

     

    4.XML语法 – 属性(Attribute)

    一个元素可以拥有多个属性

    <video name="小黄人 第01部" length="30" />            ---->video元素拥有name和length两个属性

    注意:属性值必须用 双引号"" 或者 单引号‘‘ 括住

     

    实际上,属性表示的信息也可以用子元素来表示,比如

    <video>

        <name>小黄人 第01部</name>

            <length>30</length>

    </video>

     

    三、XML的解析

    1.简单说明

    要想从XML中提取有用的信息,必须得学会解析XML

    提取name元素里面的内容

    <name>小黄人 第01部</name>

     

    提取video元素中name和length属性的值

    <video name="小黄人 第01部" length="30" />

     

    XML的解析方式有2种

    (1)DOM:一次性将整个XML文档加载进内存,比较适合解析小文件

    (3)SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件

     

    2.IOS开发中XML的解析

    在iOS中,解析XML的手段有很多

    (1)苹果原生   NSXMLParser:SAX方式解析,使用简单

    (2)第三方框架

    1)libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析

    2)GDataXML:DOM方式解析,由Google开发,基于libxml2

     

    XML解析方式的选择建议:

    大文件:NSXMLParser、libxml2

    小文件:GDataXML

    用GDataXML解析XML数据

    技术分享技术分享

    用NSXMLParser解析
    技术分享

    实现<NSXMLParserDelegate>的代理方法

    技术分享

iOS开发-HTTP请求

标签:nsdata   term   表示   基于   targe   title   3.x   加载   href   

原文地址:http://www.cnblogs.com/jierism/p/6129442.html

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