Snail—iOS网络学习之得到网络上的数据
在开发项目project中,尤其是手机APP,一般都是先把界面给搭建出来。然后再从网上down数据 来填充
那么网上的数据是怎么得来的呢,网络上的数据无非就经常使用的两种JSON和XML
如今 大部分都是在用JSON
网络上数据传输都是以二进制形式进行传输的 ,仅仅要我们得到网上的二进制数据
假设它是JSON的二进制形式 那么我们就能够用JSON进行解析 假设是XML。那么我们能够用XML解析
关键是怎么得到网上的二进制数据呢
设计一个经常使用的工具类 非常easy 给我一个接口(URL),那我就能够用这个类得到二进制文件
新建了一个类WJJHttpReques 继承NSObject
以下是.h的代码
#import <Foundation/Foundation.h> @interface WJJHttpRequest : NSObject //请求的接口
@property (nonatomic,copy) NSString * httpUrl;
//网上下载的二进制文件
@property (nonatomic,strong) NSMutableData * data;
//代理
@property (nonatomic,strong) id delegate;
//代理的方法
@property (nonatomic,assign) SEL method; //開始下载数据
- (void)start;
//断开连接
- (void)stop; @end
#import "WJJHttpRequest.h"
#import "WJJRequestManager.h" @interface WJJHttpRequest ()<NSURLConnectionDataDelegate>{
//声明connection为全局变量
NSURLConnection * _connection;
} @end @implementation WJJHttpRequest //開始下载数据
- (void)start{
NSURL * url = [NSURL URLWithString:self.httpUrl];
NSURLRequest * request = [[NSURLRequest alloc] initWithURL:url];
//仅仅要以下运行 那么代理方法就会运行了 然后開始从网上down数据
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
} #pragma mark NSURLConnectionDataDelegate method
//收到server的响应调用的代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"收到server响应");
if (self.data == nil) {
self.data = [[NSMutableData alloc] init];
}else{
[self.data setLength:0];
}
} //接受server的二进制文件
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSLog(@"接受到了server的二进制数据");
[self.data appendData:data];
} //假设成功了 參数就是YES 反之则是NO
- (void)loadFinished:(BOOL)success{
if (!success) {
[self.data setLength:0];
}
//检測要接收数据的回调对象 是否有method这种方法
if ([self.delegate respondsToSelector:self.method]) {
//假设有就运行这种方法 而且把自己当參数传过去
[self.delegate performSelector:self.method withObject:self];
}
//这个是我自己设计的Request管理类 以下这句话的意思就是把 数据传给那些须要数据的地方后,把这个连接断开
[[WJJRequestManager sharedManager] removeTask:self.httpUrl];
} //接受数据完毕时调用的方法
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSLog(@"数据接受完毕");
[self loadFinished:YES];
} //接收数据失败时调用的方法
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"数据请求失败");
[self loadFinished:NO];
} //停止下载数据
- (void)stop{
if (_connection) {
//取消连接
[_connection cancel];
}
_connection = nil;
} @end
Snail—iOS网络学习之得到网络上的数据的更多相关文章
- 网络学习day02_OSI七层模型及数据的传输过程
title: 2018.9.2 OSI七层模型及数据的传输过程 tags: 计算机网络, OSI七层模型, 数据传输, 数据解封装 --- OSI七层模型和TCP/IP五层模型 OSI七层模型 我们说 ...
- FC网络学习笔记02 -网络配置方法
随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...
- ios网络学习------9 播放网络视频
IOS提供了叫做MPMoviePlayerController MPMoviePlayerViewController两个类.能够轻松用来实现视频播放. MPMoviePlayerViewContr ...
- [svc]容器网络学习索引及网络监控
整理的可能有些误失,抽时间在细细的分类完善下. 发现这篇对于网络从低到高层协议整理的还不错 每层都有一些有意思的话题 一些协议有一些设计上的弱点, 所以产生了种种的网络层安全问题 一般我们学一些 1, ...
- 开源中国iOS客户端学习
开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客 http://blog.csdn.net/column/details/xfzl-kykhd.html ...
- ios网络学习------6 json格式数据的请求处理
ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...
- ios网络学习------4 UIWebView的加载本地数据的三种方式
ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...
- NASNet学习笔记—— 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; 核心二:采用resnet和Inception重复使用block结构思想; 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。
from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...
- ios开发网络学习十一:NSURLSessionDataTask离线断点下载(断点续传)
#import "ViewController.h" #define FileName @"121212.mp4" @interface ViewControl ...
随机推荐
- 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!
D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...
- EasyUI 动态更新列
function UpdateRow() { var rows = $('#tbpmgridList').datagrid('getChecked'); var productid = ''; for ...
- iOS学习笔记17-FMDB
上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...
- 【Luogu】P2831愤怒的小鸟(手算抛物线+状压DP)
题目链接 设f[s]表示二进制集合表示下的s集合都打掉用了多少小鸟. 预处理出lne[i][j]表示i.j确定的抛物线能打掉的小鸟集合. 于是就有f[s|lne[i][j]]=min(f[s|lne[ ...
- 作诗(bzoj 2821)
Description 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗 之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次 ...
- 济南学习 Day 5 T2 am
車(Rook) [题目描述] 众所周知,車是中国象棋最厉害的棋子之一,他能吃到同一行或者同一列的其他棋子.車显然不能和車在一打起来,于是rly有借来了许多许多車在棋盘上摆了起来...... 他想知道, ...
- lnux 下 core文件
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. 开启或关闭core文件的生成用以下 ...
- MarsEdit 快速插入代码
<div class="cnblogs_Highlighter"> <pre class="brush:objc;gutter:true;"& ...
- StringBuffer笔记
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 Strin ...
- Js 中的输出
document.write()和window.alert() 1.window.document.write(字符串或者是变量名) 作用:它会在body标签内输出内容 说明: window代表当前浏 ...