GET: 请求指定的页面信息,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
HEAD: 只请求页面的首部,HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息,用于检查对象是否存在,以及得到对象的元数据。
POST: 向服务器提交数据,请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容,PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
DELETE: 请求服务器删除指定的页面或某一个资源。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别,用于部分文档更改。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
LINK: 请求服务器建立链接关系。
UNLINK: 断开链接关系。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法
根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式
PUT :增
DELETE :删
POST:改
GET:查
提示:最常用的是GET和POST(实际上GET和POST都能办到增删改查)
GET和POST的区别使用:
(1)如果要传递大量数据,比如文件上传,只能用POST请求
(2)GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
(3)如果仅仅是索取数据(数据查询),建议使用GET
(4)如果是增加、修改、删除数据,建议使用POST
GET 和 POST两种网络请求方式的同步和异步连接
GET 同步
//1.创建网址字符串
NSString *urlStr = @"";
//2.URLEncode编码 对于网址中有中文的 需要更改编码格式
NSString *newString = [urlStr
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//3.创建NSURL对象
NSURL *url = [NSURL URLWithString:newString];
//4.创建请求对象 NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//5.同步请求
NSURLResponse *response = nil;//服务器响应对象 存储服务器响应信息 返回数据的长度 数据的类型等
NSError *error = nil;//存储连接错误信息 如连接失败 网络中断等
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//data就是通过网址从服务器请求到的数据
//解析数据 供界面上显示
[self parseDataWithData:data];
GET 异步
//1.创建网址字符串
NSString *urlStr = @"";
//2.URLEcode编码 (网址中存在中文)
NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//3.创建NSURL对象
NSURL *url = [NSURL URLWithString:newStr];
//4.创建网址请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//5.******异步请求第一种方式*******block形式********
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//data 是服务器返回来的数据
[self parseDataWithData:data];
}];
//********异步请求第二种方式******delegate******
[NSURLConnection connectionWithRequest:request delegate:self];
}
#pragma mark - NSURLConnectionDataDelegate -
//收到服务器的响应
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
//该方法在建立连接的过程中 只会执行一次
self.data = [NSMutableData data];
}
//收到服务器数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.data appendData:data];//拼接数据
}
//传输数据完毕时
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
//解析
[self parseDataWithData:self.data];
}
//连接失败时
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
}
POST同步
//1.创建网址字符串
NSString *str = [NSString stringWithFormat:kURL];
//2.创建NSURL对象
NSURL *url = [NSURL URLWithString:str];
//3.创建请求对象
NSMutableURLRequest *requset = [NSMutableURLRequest requestWithURL:url];
//4.创建参数字符串
NSString *parmStr = [NSString stringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];
//5.设置请求体 将参数字符串转化为NSData对象
[requset setHTTPBody:[parmStr dataUsingEncoding:NSUTF8StringEncoding]];
//6.设置请求方式
[requset setHTTPMethod:@"POST"];
//7.同步连接
NSData *data = [NSURLConnection sendSynchronousRequest:requset returningResponse:nil error:nil];
//8.解析
[self parseData:data];
POST异步
//1.创建网址字符串
NSString *str = [NSString stringWithFormat:kURL];
//2.创建URL对象
NSURL *url = [NSURL URLWithString:str];
//3.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//4.创建参数字符串
NSString *parmStr = [NSString stringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];
//5.设置请求体 将参数字符串转化为NSdata对象
[request setHTTPBody:[parmStr dataUsingEncoding:NSUTF8StringEncoding]];
//6.设置请求方式
[request setHTTPMethod:@"POST"];
//7.异步连接
******异步请求第一种方式*******block形式********
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//解析
[self parseData:data];
}];
//********异步请求第二种方式******delegate******
[NSURLConnection connectionWithRequest:request delegate:self];
}
//连接成功
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
//开辟空间
self.data = [NSMutableData data];
}
//接收数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
//拼接数据
[self.data appendData:data];
NSLog(@"%@", data);
}
//接收数据完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
//解析
[self parseData:self.data];
}
//
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
}
//解析数据
- (void)parseData:(NSData *)data{
//系统JSON解析
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", dict);
}
几种常见网络请求方式
最新推荐文章于 2024-02-21 11:12:28 发布