iOS开发-HTTP请求

  • 什么是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>的代理方法

时间: 2024-12-28 12:00:12

iOS开发-HTTP请求的相关文章

iOS开发网络请求——大文件的多线程断点下载

iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大小比较小导致传输所需时间少传输就快,因此不太容易影响用户体验,可用的技术就多.而大文件因为文件大小比较大导致传输时间长,因此就需要考虑到各种用户体验,比如避免在上传下载文件过程中阻塞主线程影响用户体验,就需要使用到多线程技术:为了给用户友好的进度提示,因此又需要开发中跟踪数据上传和下载数据的变化:为

iOS开发——网络请求方法汇总

在实际的项目开发中,连接网络是每一款App必不可少的基本功能.对于客户端的网络请求而言,无非是有两个实现方向:使用网络请求框架或者不使用网络请求框架.在这篇博客中,我将用苹果自带的网络请求方式(不使用第三方框架)下对iOS网络请求方法做一个汇总.我将在之后的博客中介绍使用AFNetworking框架进行请求的实现.代码已经上传至:https://github.com/chenyufeng1991/iOS-NetworkRequest   . [使用XML请求Webservice,可用GET或PO

iOS开发-Get请求,Post请求,同步请求和异步请求

标题中的Get和Post是请求的两种方式,同步和异步属于实现的方法,Get方式有同步和异步两种方法,Post同理也有两种.稍微有点Web知识的,对Get和Post应该不会陌生,常说的请求处理响应,基本上请求的是都是这两个哥们,Http最开始定义的与服务器交互的方式有八种,不过随着时间的进化,现在基本上使用的只剩下这两种,有兴趣的可以参考本人之前的博客Http协议中Get和Post的浅谈,iOS客户端需要和服务端打交道,Get和Post是跑不了的,本文中包含iOS代码和少量Java服务端代码,开始

IOS开发 REST请求 ASIHTTPRequest用法

ASIHTTPRequest类库简介和使用说明 官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRequest适用于基本

iOS开发 服务器请求出来的数据按日期重新分组

在APP开发中经常碰到这种情况,后台给的数据需要我们按照某种条件分组.比如我的项目中:需要把数组中的数据按照时间分类分组,同一天的数据放在一起比如8-20号的数据分一组,8-21号的数据分一组.代码如下: #import "ViewController.h" #import "model.h" @interface ViewController ()<UITableViewDelegate,UITableViewDataSource> { NSMutab

iOS开发中常见问题集锦

在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code 1 (use -v to see): http://www.reader8.cn/jiaocheng/20131022/2003334.html 2.开发问题 http://blog.sina.com.cn/s/blog_4cd8dd130102uzgp.html http://www.jiansh

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

iOS开发网络篇—GET请求和POST请求

iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:u

iOS开发——网络编程OC篇&amp;(三)数据请求

一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:urlStr]; 4 5 // 2.创建请求对