zoukankan      html  css  js  c++  java
  • iOS-Http : GET : POST

    一.概述

    * HTTP/1.1协议共定义了8中请求方法:OPTIONS, HEAD, GET, POST, PUT, DELETE, TRACE, CONNECT.

    * GET方法和POST是我们使用最频繁的网络请求方法。

    * GET和POST在应用场合有什么区别呢?

    * GET方法向指定资源发出请求,发送的消息显示的跟在URL后面,用户信息不安全,并且传送信息量有限。(如下所示,在请求中能看到用户名和密码)

       http://localhost:8080/logandreg/logreg?name=wyg&pwd=1992

    * 如果仅仅是向服务器索要数据,没有参数,使用GET比较方便。(如下所示)

       http://www.baidu.com

    * POST传送的信息量大,并且传送的信息是被隐藏的,传送信息比较安全,如果向服务器传送数据,建议使用POST.

    二.GET请求网络数据(同步,异步)

    * 如上所述,GET方法可以向指定资源发出请求,比如我们想再网络上请求一张图片在本地上显示,使用GET方法就非常的方便。

    * GET请求分为同步请求和异步请求,一般情况下,为了良好的用户体验,我们都使用异步请求。

    * GET同步请求一张网络图片(代码折叠)

    1 NSURL *url = [NSURL URLWithString:@"http://img.ivsky.com/img/bizhi/slides/201508/18/september-012.jpg"];
    2 NSURLRequest *request = [NSURLRequest requestWithURL:url];
    3 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    4  _iamgeview.image = [UIImage imageWithData:data];
    同步获取网络图片

     *GET异步请求一张网络图片(iOS5.0)(代码折叠):

    1 NSURL *url = [NSURL URLWithString:@"http://img.ivsky.com/img/bizhi/slides/201508/18/september-012.jpg"];
    2 NSURLRequest *request = [NSURLRequest requestWithURL:url];
    3 NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    4 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    5  _iamgeview.image = [UIImage imageWithData:data];
    6     }];
    异步获取网络图片

      *GET异步请求(iOS2.0)(代码折叠)

     1 - (void)viewDidLoad
     2 {
     3     [super viewDidLoad];
     4     NSURL *url = [NSURL URLWithString:@"http://img.ivsky.com/img/bizhi/slides/201508/18/september-012.jpg"];
     5     NSURLRequest *request = [NSURLRequest requestWithURL:url];
     6     [NSURLConnection connectionWithRequest:request delegate:self];
     7 }
     8 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
     9 {
    10     NSLog(@"接收到响应");
    11     _buffer = [[NSMutableData alloc]init];
    12 }
    13 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    14 {
    15     NSLog(@"接收到数据");
    16     [_buffer appendData:data];
    17 }
    18 - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    19 {
    20     NSLog(@"请求完成");
    21     _iamgeview.image = [UIImage imageWithData:_buffer];
    22 }
    23 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)erro
    24 {
    25     NSLog(@"请求出错");
    26 }
    异步请求网络图片

     三.POST请求网络数据(以异步为例,同步的与GET类似)

    * 传输信息安全性比GET高。

    * 传输信息量比GET大。

    * 代码中带有详细解释,代码如下:

    - (IBAction)postRequest:(id)sender
    {
        //明确请求的url
        NSURL *url = [NSURL URLWithString:@"http://localhost:8080/logandreg/logreg"];
        //创建请求(可变请求)
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        //指定请求方式
        [request setHTTPMethod:@"POST"];
        //拼接参数内容
        NSString *body = @"name=wyg&pwd=1992";
        //请求数据放到请求的请求体中
        [request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
        //使用post发起异步请求
        [NSURLConnection connectionWithRequest:request delegate:self];
    }
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        //接收到响应之后响应的方法
        _buffer = [[NSMutableData alloc]init];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        //接收到数据之后响应的方法
        [_buffer appendData:data];
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        //数据处理完成之后响应的方法
        NSString *str = [[NSString alloc]initWithData:_buffer encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
    }
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        //请求出错之后响应的方法(如断网,超时)
    }
    
  • 相关阅读:
    【原创】大数据基础之Hadoop(3)yarn数据收集与监控
    【原创】运维基础之Docker(7)关于docker latest tag
    【原创】大数据基础之ElasticSearch(4)es数据导入过程
    【原创】大叔经验分享(44)hdfs副本数量
    【转】IAR IDE for MSP430、8051、ARM等平台的结合使用
    写驱动的步骤
    【转】IAR for STM8介绍、下载、安装与注册
    KEIL中函数定义存在但go to definition却不跳转的原因
    FatFs
    学习2__STM32--汉字显示
  • 原文地址:https://www.cnblogs.com/wangyaoguo/p/4810111.html
Copyright © 2011-2022 走看看