1.网络基础+UIWebView

为什么要学习网络编程?

在移动互联网时代,移动应用,只有通过网络进行数据交互,才能保持活力!缺少了数据变化,无论多么华丽的应用,终将变成一潭死水

移动网络应用(良好的UI+良好的用户体验):

即时通讯:QQ 新闻:网易、凤凰新闻

视频:优酷、百度视频

音乐:虾米、QQ音乐

照片:Facebook、Flickr

LBS(基于位置服务):高德、大众点评、墨迹天气、滴滴、快的

电商:淘宝、天猫、京东

所罗门SoLoMo(社交+本地化+移动):微信、微博、陌陌、比邻 ……

什么是网络

在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息连接到一起,从而实现这些资源的共享

互联网上是如何识别每一台计算机的 —— IP地址

IP地址被用来给Internet上的电脑一个编号,不容易记忆

人们更习惯使用域名访问网络上的计算机

互联网上是如何访问资源的 —— 协议

网络中的计算机要能够互相顺利的通信,就必须讲同样的语言,这个语言就相当于协议

互联网上是如何定位资源的 —— URL

统一资源定位符(Uniform Resource Locator,缩写为URL)是对互联网上资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个资源都有一个唯一的URL,它包含的信息指出该资源的位置

互联网上是如何传输数据的 —— 二进制流

URL示例(网址)

UIWebView

UIWebView是iOS内置的浏览器控件,可以浏览网页、打开文档等

能够加载html/htm、pdf、docx、txt等格式的文件

系统自带的Safari浏览器就是通过UIWebView实现的

在iOS7 之前, UILabel、UITextField,以及UITextView都在后台以某种方式使用WebKit来进行文本布局和渲染的

 1 #import "ViewController.h"
 2
 3 @interface ViewController () <UISearchBarDelegate>
 4
 5 @property (weak, nonatomic) IBOutlet UIWebView *webView;
 6 @property (weak, nonatomic) IBOutlet UIBarButtonItem *goBackButton;
 7 @property (weak, nonatomic) IBOutlet UIBarButtonItem *goForwardButton;
 8
 9 @end
10
11 @implementation ViewController
12
13 - (void)viewDidLoad
14 {
15     [super viewDidLoad];
16
17     // 1. 确定要访问的资源——URL
18     NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
19
20     // 2. 建立网络请求
21     // 提示:所有的网络访问的本质都是一个网络请求:即请求从服务器获取某一个资源
22     // 因此在网络访问中,指定了要访问的资源地址之后,需要建立一个网络访问请求
23     // 该请求的含义是:向服务器[请求][资源URL]
24     NSURLRequest *request = [NSURLRequest requestWithURL:url];
25
26     // 3. UIWebView加载网络请求
27     [self.webView loadRequest:request];
28 }
29
30 #pragma mark - 搜索栏代理方法
31 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
32 {
33     NSString *str = searchBar.text;
34
35     // 1. 判断是否以http开头,如果没有则用百度搜索
36     if (![str hasPrefix:@"http://"]) {
37         str = [NSString stringWithFormat:@"http://m.baidu.com/s?word=%@", str];
38     }
39
40     // 2. 在URL中,如果包含中文字符串,需要将字符串转换为带百分号的格式
41     NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
42     NSURLRequest *request = [NSURLRequest requestWithURL:url];
43     [self.webView loadRequest:request];
44
45     [self.view endEditing:YES];
46 }
47
48 #pragma mark - UIWebView代理方法
49 - (void)webViewDidFinishLoad:(UIWebView *)webView
50 {
51     self.goBackButton.enabled = self.webView.canGoBack;
52     self.goForwardButton.enabled = self.webView.canGoForward;
53 }
54
55 @end

UIWebView1

UIWebView加载文件演练

1 #import <UIKit/UIKit.h>
2
3 @interface ViewController : UIViewController
4
5 @property (nonatomic, strong) NSURL *fileURL;
6
7 @end

ViewController.h

 1 #import "ViewController.h"
 2
 3 @interface ViewController ()
 4
 5 @property (nonatomic, strong) UIWebView *webView;
 6
 7 @end
 8
 9 @implementation ViewController
10
11 - (UIWebView *)webView
12 {
13     if (!_webView) {
14         _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
15         _webView.dataDetectorTypes = UIDataDetectorTypeAll;
16     }
17
18     return _webView;
19 }
20
21 - (void)viewDidLoad
22 {
23     [super viewDidLoad];
24
25     [self.view addSubview:self.webView];
26
27     [self loadDataWithURL:self.fileURL];
28 }
29
30 #pragma mark - 加载文档演练
31 - (void)loadTextFileWithURL:(NSURL *)url
32 {
33     [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
34 }
35
36 - (void)loadDataWithURL:(NSURL *)url
37 {
38     NSData *data = [NSData dataWithContentsOfURL:url];
39     NSString *mimeType = [self mimeTypeWithURL:url];
40
41     [self.webView loadData:data MIMEType:mimeType textEncodingName:@"UTF8" baseURL:nil];
42 }
43
44 - (NSString *)mimeTypeWithURL:(NSURL *)url
45 {
46     NSURLRequest *request = [NSURLRequest requestWithURL:url];
47
48     NSURLResponse *response = nil;
49     [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
50
51     return response.MIMEType;
52 }
53
54 @end

ViewController.m

1 #import <UIKit/UIKit.h>
2
3 @interface MainViewController : UITableViewController
4
5 @end

MainViewController.h

 1 #import "MainViewController.h"
 2 #import "ViewController.h"
 3
 4 @interface MainViewController ()
 5
 6 @property (nonatomic, strong) NSBundle *docsBundle;
 7 @property (nonatomic, strong) NSArray *files;
 8
 9 @end
10
11 @implementation MainViewController
12 /**
13  1. 从docs.bundle中加载所有文件列表
14  */
15
16 - (NSBundle *)docsBundle
17 {
18     if (!_docsBundle) {
19         NSString *path = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"docs.bundle"];
20         _docsBundle = [NSBundle bundleWithPath:path];
21     }
22
23     return _docsBundle;
24 }
25
26 - (NSArray *)files
27 {
28     if (!_files) {
29         _files = [[NSFileManager defaultManager] subpathsAtPath:self.docsBundle.bundlePath];
30     }
31
32     return _files;
33 }
34
35 - (void)viewDidLoad
36 {
37     [super viewDidLoad];
38 }
39
40 #pragma mark - 数据源方法
41 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
42 {
43     return self.files.count;
44 }
45
46 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
47 {
48     static NSString *ID = @"Cell";
49
50     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
51
52     cell.textLabel.text = self.files[indexPath.row];
53
54     return cell;
55 }
56
57 #pragma mark - 代理方法
58 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
59 {
60     [self performSegueWithIdentifier:@"Load File" sender:indexPath];
61 }
62
63 #pragma mark - Navigation
64 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSIndexPath *)indexPath
65 {
66     ViewController *vc = segue.destinationViewController;
67
68     NSString *fileName = self.files[indexPath.row];
69
70     vc.fileURL = [self.docsBundle URLForResource:fileName withExtension:nil];
71     vc.title = fileName;
72 }
73
74 @end

MainViewController.m

时间: 2024-11-03 22:41:39

1.网络基础+UIWebView的相关文章

网络基础笔记——OSI七层模型

OSI七层模型 由于整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等.如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只程序都需要改写.所以我们将整个网络分成数层,每层都有自己独立的功能,而且每层的代码都可以独立撰写,因为相互之间不会干扰.如此一来,当某个小环节出现问题时,只要将该层的代码改写即可.并且这样可以让整个网络层次更加的清晰. 在网络上传输信息就像是一个发包裹的过程,从己方的应用程序开始往第七层的包裹里塞数据,再依次塞到第一层的包

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

网络基础

3.1 网络基础 001 问题:为什么要学习网络编程? 回答:(1)网络编程是一种实时更新应用数据的常用手段 (2)网络编程是开发优秀网络应用的前提和基础 002 网络基本概念 2-1 客户端(就是手机或者ipad等手持设备上面的APP) 2-2 服务器(远程服务器-本地服务器) 2-3 请求(客户端索要数据的方式) 2-4 响应(需要客户端解析数据) 2-5 数据库(服务器的数据从哪里来) 3.2 Http 001 URL 1-1 如何找到服务器(通过一个唯一的URL) 1-2 URL介绍 a

网络基础配置

1.网络基础知识一台主机如果可以连接公网,比如访问www.baidu.com 那么这台主机必然会有 ipaddress GATEWAY     dns       主机域名转换成ip的服务器 ############ipaddress############## tcp/ip ipv4 2进制32位 254.254.254.254/255.255.255.0 11111110.11111110.11111110.11111110/11111111.11111111.11111111.000000

网络基础实用知识(五)

第二章认识网络常用设备(一) 一.     家庭用路由器 1.家庭路由器图例 家用路由器在市场上品牌很多,设置方法看各路由器说明书.家庭路由器一般作为家庭网的出口设备. 2.家庭路由器连接示意图 3.设置方法 连线 按照说明书给的路由器ip地址,配置电脑ip与路由器同网段. 在浏览器里输入:http://路由器ip地址 输入说明书提供的用户名和密码登陆路由器 配置上网方式:根据你实际情况配置静态地址或者PPPOE拨号. 配置是否开启DHCP. 设置无线开放状态包括:SSID的发布.密码等. 联网

软考之网络基础

开始以为自己对网络基础的知识还算了解,可是看书和做题后会发现很多细节的东西还是没有掌握,所以总结才能让知道的知识更系统,复习起来也会笔记轻松. 网络基础的概念的一些东西就不贴出来,这里总结一下:ISO/OSI网络体系结构模型和TCP/IP协议模型以及各个层次的常用设备和传输协议.由于这些都是有对应关系的,看书总有种很混乱的感觉,看过之后映像不深刻,所以做题的时候就会有种似曾相识但是又不能完全确定的感觉! 下面是一张传输协议ISO/OSI.TCP/IP的对应图这样看起来会更清晰: 一.物理设备详述

【网络基础】ICMP报文和ping指令

ICMP报文: 作用: 为了更有效转发IP数据报和提高 IP 数据报交付成功的机会, 在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol). 概念: ICMP 不是高层协议,而是 IP 层的协议.ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送. 格式: 种类(对应ICMP报文内的类型字段): ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文. ICMP差错报告报文共有五种:

网络基础知识查询

第一章.基础网络概念 1.1 网络是个什么玩意儿 全世界的人种有很多,人类使用的语言种类也多的很.那如果你想要跟外国人沟通时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他学中文,一种则是我们学他的语言,这样才能沟通啊.在目前世界上的强势语言还是属于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就能够沟通了.希望不久的未来,咱们的中文能够成为强势语言啊! 这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有 Windows/Li

linux网络基础设置 以及 软件安装

一. linux网络基础设置 网络设置基本可以分为:网卡设置.网关设置.DNS设置三部分 ifconfig命令 ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了. 参数 add<地址>:设置网络设备IPv6的ip地址: del<地址>:删除网络设备IPv6的IP地址: down:关闭指定的网络设备: up:启动指定的网络