IOS网络编程笔记(1)

来源:互联网 发布:程序员简历表格 编辑:程序博客网 时间:2024/05/06 06:18

网络编程

C/S,B/S系统架构。

手机客户端

Web App  Html5

C/S:客户/服务器


服务器端开发语言:

java

.net

C/C++

php

python

Ruby

Node.js  javascript


文本数据:JSON数据、XML数据。

图片数据:

音频数据:

视频数据:


数据通讯:

HTTP协议的基本概念:

·全称“超文本传输协议”,浏览器和服务器之间的通信规则

·HTTP协议永远是客户端发起请求,客户端回送响应。



客户端——>服务器端的数据格式:1.JSON 2.XML(使用较少)3.key1=value1&key2=value2......(轻量级)

服务器端——>客户端数据格式:1.JSON 2.XML


GET请求:是向服务器索取的一种请求方式

POST请求:是向服务器提交数据的一种请求方式(只有POST才有请求体),如用户登陆。请求的参数有两种形式:1.放在URL后面,2.放在请求体中。

HTTP请求

HTTP请求主要由两部分组成:http请求头,http请求体。

POST请求才有请求体。



HTTP响应

HTTP响应头:

HTTP响应内容:

HTTP响应码:

200表示成功

404页面不存在

500以上响应码表示服务器程序出现问题


访问网络的基本概念

#访问网络的方式

*同步请求:数据的请求过程是在主线程来执行的。网络数据加载需要一个时间,这样的话会堵塞主线程。

*异步请求:数据的请求过程在多线程中执行。

*同步请求无法取消,异步请求过程中可以取消。同步请求无法监听加载进度,异步请求可以监听。

#网络请求组件

CFNetwork是一种底层的高性能架构,他是基于BSD sockets的基础上做了拓展。

NSURLConnection组件


#访问网络的基本流程:

1.构造NSURL实例(地址);

2.构造请求NSURLRequest;

3.构造启动链接NSURLConnection;

4.发送同步请求/异步请求;

5代理对象实现协议,用于监听通讯事件。


#NSURL释义和常用方法

* NSURL实例包装了一个地址信息,可以使本地地址,也可以是网络地址。

*常用方法

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];    NSLog(@"Scheme:%@",[url scheme]);//Scheme:http    NSLog(@"Host:%@",[url host]);//Host:www.baidu.com    NSLog(@"AbsoluteString:%@",[url absoluteString]);//AbsoluteString:http://www.baidu.com:8080/search?id=1    NSLog(@"RelativePath:%@",[url relativePath]);//RelativePath:/search    NSLog(@"Port:%@",[url port]);//Port:8080    NSLog(@"Path:%@",[url path]);//Path:/search    NSLog(@"PathComponents:%@",[url pathComponents]);//PathComponents:("/",search)    NSLog(@"Query:%@",[url query]);//Query:id=1

#NSURLRequest不可变请求对象,不能动态添加请求信息。

NSURLRequest包装了网络请求的信息。

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];


#NSURLRequest的缓存策略:

NSURLRequest的cachePolicy属性可以设置缓存的的策略。这是一种内存缓存,非硬盘缓存。

使用缓存的目的是为了使用的应用程序能更快的响应用户输入,使程序高效的运行。有的时候我们需要将远程web服务器获得的数据缓存起来,减少对同一个url的多次请求。

cachePolicy支持的缓存策略:

·NSURLRequestUseProtocolCachePolicy 默认的缓存策略,要在协议的实现方法中指定缓存逻辑

·NSURLRequestReloadIgnoringCacheData 忽略缓存从原始地址下载

·NSURLRequestReturnCacheDataElseLoad 没有缓存时从原始地址下载

·NSURLRequestReturnCacheDataDontLoad 只使用缓存,如果不存在缓存,请求失败,适用于没有建立 网络连接离线模式

·NSURLRequestReloadIgnoringLocalAndRemoteCacheData 忽略本地和远程的缓存数据,直接从原始 地址下载,与NSURLRequestReloadIgnoringCacheData类似

·NSURLRequestReloadRevalidatingCacheData 验证本地数据与远程数据是否相同,如果不同则下载远 程数据,否则使用本地数据

NSMutableURLRequest实例可以对请求信息重新设置

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];    [request setTimeoutInterval:60];    [request setHTTPMethod:@"GET"];    [request setHTTPBody:_data];    [request setValue:@"tttt" forHTTPHeaderField:@"cookes"];











0 0
原创粉丝点击