几种常见网络请求方式

原创 2016年05月30日 23:32:23
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);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android几种网络访问方式的比较

转自:http://www.tuicool.com/articles/ARrQny 本文档要做的事情: 1.介绍两种网络访问客户端:HttpClient和HttpURLConnecti...
  • gf771115
  • gf771115
  • 2014年07月16日 13:57
  • 19428

http 的八种方法(动作)

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源: OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服...
  • github_33261002
  • github_33261002
  • 2016年03月07日 19:25
  • 1175

android中做网络请求的几种方式

在android中经常进行网络请求 目前了解的大概有三种 java.net包中的HttpURLConnection类 android的网络请求在4.0后都要求放在子线程中进行...
  • alleged
  • alleged
  • 2016年08月16日 13:46
  • 1449

iOS网络请求中常见的几种方式

POST与GET区别,以及POST与GET同步异步的使用 ①.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。②.从上面的http请求中就能看出,GET提交是将请求的数据附...
  • bowei1105
  • bowei1105
  • 2017年05月12日 08:28
  • 105

Android用到的几种网络请求方式

  • 2014年09月04日 16:46
  • 4KB
  • 下载

android 几种网络请求方式

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看...
  • e10010e
  • e10010e
  • 2015年07月10日 14:10
  • 208

Android中的几种网络请求方式详解

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看...
  • u010823509
  • u010823509
  • 2016年06月23日 09:49
  • 324

Android中的几种网络请求方式详解

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看...
  • danile2009
  • danile2009
  • 2012年09月26日 15:55
  • 296

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下...
  • h3c4lenovo
  • h3c4lenovo
  • 2013年10月10日 15:36
  • 1207

Android中的几种网络请求方式详解

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看...
  • he90227
  • he90227
  • 2014年06月23日 14:23
  • 858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种常见网络请求方式
举报原因:
原因补充:

(最多只允许输入30个字)