zoukankan      html  css  js  c++  java
  • IOS网络编程

    IOS网络编程

     

    目录

    • 概述——对IOS网络编程的理解
    • 使用苹果官方库进行网络请求

     

    概述——对IOS网络编程的理解

     

    使用苹果官方库进行网络请求

    NSURLConnection

    同步GET方法

    NSString *urlStr = [NSString stringWithFormat:@"http//localhost/MyWorkProcession.php?method=login&std_ID=123&password=123];

    NSURL *url = [NSURL URLWithString:urlStr];

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

    //网络请求回来的应答数据

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    NSString *response_str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    注:使用同步GET方法进行请求,优点是在网络条件非常良好的情况下运行效率高,不会因为在不同线程间进行切换降低了程序的运行效率,当然缺点也很明显,用户体验比较差,在进行网络请求时,程序不能响应用户的其他操作,而且如果在网络条件比较差的条件下,用户的等待时间是非常久的,GET方法直接把参数暴露在url上,是比较不安全的请求方式,对于没那么重要的请求信息可以使用GET方法

    异步POST方法

    NSURL *url = [NSURL URLWithString:urlStr];

    NSString *postValue = [NSString stringWithFormat:@"method=login&std_ID=123&password=123];

    NSData *postData = [postValue dataUsingEncoding:NSUTF8StringEncoding];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:postData];

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    if(connection){

      _datas = [NSMutableData new];

    }

    需要实现的NSURLConnectionDelegate and NSURLConnectionDataDelegate

    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
      [_datas appendData:data];

    }

    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

      NSLog(@"%@",[error localizedDescription]);

    }

    -(void)connectionDidFinishLoading:(NSURLConnection *)connection{

      //对_datas的处理

    }

    注:使用异步的网络请求,虽然增加了CPU在调度之间的开销,但是获得了更好的用户体验,可以响应用户的其他操作,POST方法把请求参数封装到request的请求体上,增大了请求参数的安全性

     

  • 相关阅读:
    "ERR unknown command 'cluster'"
    shell-url-decode
    mac-ppt-auto-open-recovery-files
    gorm-Duplicate-entry
    mac 终端光标在单词之间移动
    seelog 文件输出格式
    nginx-port-Permission-denied
    浏览器-网络
    浏览器-兼容性
    浏览器-浏览器知识
  • 原文地址:https://www.cnblogs.com/IOS-Developer/p/4121390.html
Copyright © 2011-2022 走看看