HTTP协议
来源:互联网 发布:服装商品数据分析报表 编辑:程序博客网 时间:2024/05/18 11:37
HTTP协议的基本概念
全称“超文本传输协议”,浏览器和服务器之间的通信规则
HTTP协议永远都是客户端发起请求,服务器回送响应。
请求方式
用户在发送请求消息时,又可以分为多种不同的请求方式。比较常见的请求方式是“get”和“post”请求
“get”请求:是向服务器索取数据的一种请求方式
“post”请求:是向服务器提交数据的一种请求方式,如“用户登陆”等等
HTTP请求
Http请求主要由两部分组成:http请求头、http请求体
POST请求才有请求体
请求的参数有两种形式:1.放在URL后面,2.放在请求体中
URL: http://weibo.com/mechenwei?page=1&pagesize=20
HTTP请求头:
Accept: text/html,application/xhtml+xml,application/
xml;q=0.9,*/*;q=0.8
Accept-Charset: GBK,utf-8;
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;
Connection: keep-alive
....
....
HTTP请求体:
userName=scsys&password=scsys2805
HTTP响应
HTTP响应主要由两部分组成:响应头、响应内容
HTTP响应有个状态码,标示响应的结果,例如200表示成功,404未找到页面
HTTP响应头:
Cache-Control:no-cache, must-revalidate
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Thu, 10 Jan 2013 02:41:29 GMT
DPOOL_HEADER:alice82
....
....
HTTP响应体:
{username:”wxhl”,success:true};
打开 课件中的 HTTP Client.app 输入 http://www.baidu.com
method:选择 get
在下面Header Name 与 Header Value中可以设置 对应的请求头
点击 send
点击 Response 查看返回结果
可以把内容拷贝到一个网页文档中 直接运行
method:选择 post
点击 send 测试
Header Name 与 Header Value中可设置 Accept-Language:en
在 Body 中加入 userName=scsys&password=123456 也可以传递 json/xml数据格式
点击 send 测试
3、访问网络的基本概念
访问网络的方式
同步请求: 数据的请求过程是在主线程来执行的。网络数据加载需要一个时间过程,这样的话就会堵塞主线程。
异步请求:数据的请求过程在多线程来执行。
同步请求无法取消,异步请求过程中可以取消。同步请求无法监听加载进度,异步可以监听。
访问网络的基本流程
基本流程
构造NSURL实例(地址)
生成NSURLRequest请求
通过NSURLConnection发送请求
通过返回NSURLRespond实例和NSError实例分析结果
接受返回数据
NSURL释义与常用方法
NSURL释义
NSURL实例包装了一个地址信息,可以是本地地址,也可以是远程地址
常用方法
// 初始化URL实例
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];
NSLog(@"Scheme: %@", [url scheme]);// http
NSLog(@"Host: %@", [url host]);// www.baidu.com
NSLog(@"absoluteString : %@",[url absoluteString]);//http://www.baidu.com:8080/search?id=1
NSLog(@"relativePath : %@", [url relativePath]); // /search
NSLog(@"Port: %@", [url port]);// 8080
NSLog(@"Path: %@", [url path]);// /search
NSLog(@"pathComponents : %@", [url pathComponents]); // "/",search
NSLog(@"Query: %@", [url query]);//id=1
NSURLRequest的释义
NSURLRequest的使用
NSURLRequest 包装了网络请求的信息。
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];
// cachePolicy 缓存策略 timeoutInterval 超时时间
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60];
NSURLRequest的使用
NSMutableRequest的使用
相对于NSRequest实例,NSMutableRequest实例可以对请求信息重新设置
示例:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
// 设置请求方式
[request setHTTPMethod:@"POST"];
// 设置超时时间
[request setTimeoutInterval:60];
// 设置请求参数
[request setHTTPBody:_data];
// 设置请求头
[request setValue:@"tttt" forHTTPHeaderField:@"cookes"];
同步请求用法
同步请求
// 构造url
NSURL *url = [NSURL URLWithString:@"http://www.iphonetrain.com"];
// 创建一个请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLResponse *response;
// 发送同步请求,请求成功后返回数据
NSData *resultData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:nil];
NSString *dataString = [[NSString alloc] initWithData:resultData
encoding:NSUTF8StringEncoding];
self.resultText.text = dataString;
异步请求用法
第一种方式
NSURL *url = [NSURL URLWithString:request_url];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 发送异步请求
[NSURLConnection connectionWithRequest:request delegate:self];
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData
*)data {
[_data appendData:data];
} // 接受加载的数据
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *dataString = [[NSString alloc] initWithData:_data
encoding:NSUTF8StringEncoding];
self.resultText.text = dataString;
} // 数据加载完以后调用
异步请求
第二种方式(开辟一个子线程)
- (IBAction)asychroRequest:(id)sender {
[self performSelectorInBackground:@selector(loadData)
withObject:nil];
} // 启动一个新的线程加载数据
- (void)loadData {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURL *url = [NSURL URLWithString:request_url];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLResponse *response = nil;
// 发送同步请求
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:nil];
NSString *stringData = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
[self performSelectorOnMainThread:@selector(afterLoadData:)
withObject:stringData waitUntilDone:NO];
[pool release];
}
取消异步请求
发送cancel取消请求,注意同步无法取消。
0 0
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议。。。
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- http协议
- HTTP协议
- Android UI设计——Button控件
- Unity中的Attribute
- Google浏览器清除缓存快捷键
- Activity运行状态以及完全退出程序
- UICollectionView
- HTTP协议
- hdu 1058 Humble Numbers(dp)
- C 语言开发
- 九度OJ 题目1207:质因数的个数
- 在二维数组寻找两个定点的最短距离(递归)
- 对梯度幅值进行非极大值抑制
- OpenCV 完全安装 新增VS2010+OpenCV2.1,新增VS2010+OpenCV2.3.1
- Thinking in java 之'数据初始化'
- Android学习笔记之绘图api以及自定义视图