ios学习(从网络上获取数据)

从网络上获取数据:

1.从网络上获取数据,采用如下这种方式会带来主线成阻塞现象,主线成主要是负责的是ui的交互(用户输入指令或数据,系统给一个反馈)

会进一步让ui停止交互

1)首先给我们将要下载的图片设置好位置

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@“地址”]]];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 100, 80)];

imageView.image = image;

2).加载到view上

self.view addSubview:imageView];

网络下载的几个步骤

1.开始请求

2.实现代理方法对数据进行初始化

3.开始接受数据

4.对接受的数据进行处理

5.在接受失败时候对数据的处理

2.我们应该采用这种方式来进行对网络数据的请求,网络异步加载

1).异步加载要遵循一个代理NSURLConnectionDataDelegate

2).定义的全局变量的一个初始化,用来存放数据

_data = [[NSMutableData alloc]init];

NSURL *url = [NSURL URLWithString:string];

3).像网络发送一个请求,请求数据

NSURLRequest *req = [NSURLRequest requestWithURL:url];

4).进行对网络进行请求的一个类,专门来做网络连接的一个类

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:NO];

5).开始请求

[conn start];

6).实现代理方法,开始接收数据,对数据进行初始化,每次下载都初始化为0,确保接着下载时里面的长度设为0.清空原始的内容

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

_data.length = 0;

}

7).开始接收拼接数据,也就是追加数据。类似于我们之前的追加字符串的做法

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

[_data appendData:data];

}

8).对下载完成的数据进行处理

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{

UIImage *image = [UIImage imageWithData:_data];

UIImageView *vie = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 150, 100)];

vie.image = image;

[self.view addSubview:vie];

}

9).出错处理,这里的出错处理有数据的出错,以及网络地址的出错

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

NSLog(@"错误");

}

3.采用第三方库的一种方式请求网络数据

步骤,1).倒入第三方库,

2).将库中.m文件结尾的加一个-info-objc-arc,解决arc问题(当然前提是你考虑arc情况的库,如果不是则不需要)

这样省很多代码

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 08:39:37

ios学习(从网络上获取数据)的相关文章

Snail—iOS网络学习之得到网络上的数据

在开发项目工程中,尤其是手机APP,一般都是先把界面给搭建出来,然后再从网上down数据 来填充 那么网上的数据是怎么得来的呢,网络上的数据无非就常用的两种JSON和XML 现在 大部分都是在用JSON 网络上传输数据都是以二进制形式进行传输的 ,只要我们得到网上的二进制数据 如果它是JSON的二进制形式 那么我们就可以用JSON进行解析 如果是XML,那么我们可以用XML解析 关键是怎么得到网上的二进制数据呢 设计一个常用的工具类 很简单 给我一个接口(URL),那我就可以用这个类得到二进制文

IOS学习笔记 -- 网络编程

一.HTTP协议1.面试题: 聊一下HTTP协议(表达对HTTP协议的看法)* HTTP协议的全称: 超文本传输协议, 定制传输数据的规范(客户端和服务器之间的数据传输规范)* 描述HTTP协议完整的通信过程 2.通信过程1> 请求* 客户端 --> 服务器* 请求的内容a."请求行" : 请求方法\请求资源路径\HTTP协议版本GET /MJServer/login?username=123&pwd=123&method=get&type=JSON

内容和图片在从网络上获取到之后都会存入到本地缓存中

内容和图片在从网络上获取到之后都会存入到本地缓存中,因此即使手机在没有网络的情况下依然能够加载出以前浏览过的新闻.而使用的缓存技术不用多说,自然是DiskLruCache了,那么首先第一个问题,这些数据都被缓存在了手机的什么位置呢? 其实DiskLruCache并没有限制数据的缓存位置,可以自由地进行设定,但是通常情况下多数应用程序都会将缓存的位置选择为 /sdcard/Android/data/<application package>/cache 这个路径.选择在这个位置有两点好处:第一,

Android:解决客户端从服务器上获取数据乱码的方法

向服务器发送HTTP请求,接收到的JSON包为response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解码还是出现了中文乱码,在后面加了 String name = new String(response.getBytes("iso-8859-1"), "UTF-8"); 也无济于事.想到服务器好像是用URLENCODER编了码的,怀着试一试的态度

使用异步任务加载网络上json数据并加载到ListView中

Android中使用网络访问来加载网上的内容,并将其解析出来加载到控件中,是一种很常见的操作.但是Android的UI线程(也就是主线程)中是不允许进行耗时操作的,因为耗时操作会阻塞主线程,影响用户体验.而访问网络同样是一个耗时操作,并且Android3.0以后是不允许在主线程中访问网络的,所以我们这里用Android封装好的AsyncTask类来完成这些耗时操作. 项目的目录结构如下: AsyncTask是一个抽象类,实际上他是封装好的一个类,底层也是用handler和thread来实现的,我

(转)mac 下使用wireshark监听网络上的数据

mac 下使用wireshark监听网络上的数据 分三个步骤: 1.wireshark安装 wireshark运行需要mac上安装X11,mac 10.8的系统上默认是没有X11的.先去http://xquartz.macosforge.org/landing/下载最新的 xquartz安装,安装好就有X11了. wireshark的下载,网上有很多下载源.官网试了几次,没打开的成.可以考虑去华军之类的网站上下载. 2.打开网卡,允许wireshark访问 安装好xquartz和wireshar

iOS学习笔记---网络请求

一.HTTP协议的概念 HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型(c/s) HTTP协议的特点 支持客户/服务器模式(c/s模式) 简单快速 灵活,HTTP允许任意类型的对象进行传输,正在传输的对象类型由Content-type加以标记 iOS学习笔记---网络请求

使用python访问网络上的数据

这两天看完了Course上面的: 使用 Python 访问网络数据 https://www.coursera.org/learn/python-network-data/ 写了一些作业,完成了一些作业.做些学习笔记以做备忘. 1.正则表达式 --- 虽然后面的课程没有怎么用到这个知识点,但是这个技能还是蛮好的. 附上课程中列出来的主要正则表达式的用法: Python Regular Expression Quick Guide ^ Matches the beginning of a line

从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表,利用xlsxwriter

#__author__ = 'xu.duan' # -*- coding: utf-8 -*- ####################################################################### # import xlsxwriter,time,datetime from redmine import Redmine from functools import reduce import sys import os import os.path imp