IOS网络编程笔记(1)

网络编程

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值