zoukankan      html  css  js  c++  java
  • Get的同步以及异步

    1.Get的同步请求

    - (NSURLRequest *)getLoginRequest

    
    

    {

        NSString *userName = _userName.text;
    
    

        NSString *password = [_password.text companyMD5];

    
    

        NSLog(@"%@", [_password.text MD5]);

    
    

        NSLog(@"%@", password);

        // 1. 网络地址URL

    
    

        NSString *urlString = [NSStringstringWithFormat:@"http://192.168.3.251/~apple/itcast/login.php?username=%@&password=%@", userName, password];

    
    

        urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL *url = [NSURL URLWithString:urlString];

        // 2. 请求

    
    

        // 1> url

    
    

        // 2> 缓存策略

    
    

        // 3> 超时时长

    
    

        // 提示:因为网络的状态是未知的,因此要使用URLRequest一定要指定超时时长

    
    

        // 否则会严重影响用户体验!

    
    

        return [NSURLRequestrequestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:2.0f];

    15 
    16 #pragma mark 同步登录请求
    17 - (IBAction)syncLogin
    18 {
    19     // 1. 建立请求
    20     NSURLRequest *request = [self getLoginRequest];
    21     
    22     // 在OC中,凡是看到__autoreleasing标示符的,表示参数需要传入地址,所谓地址就是添加“&”
    23     NSURLResponse *response = nil;
    24     NSError *error = nil;
    25     
    26     // 同步请求的应用场景:例如:网银账户的登录!
    27     // 一定要获取到某个网络返回数据后,才能进行下一步操作的场景!
    28     // 发送同步请求,respone&error要带地址的原因就是为了方法执行后,能够方便使用response&error
    29     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    30     
    31     // 提示,上面的网络同步请求不完成,下面一句话是不会执行到的!
    32     if (data != nil) {
    33         // 网络请求正常
    34         
    35         // 将data转换为字符串
    36         NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    37         
    38         [self showMessageWithResult:result];
    39     } else if (data == nil && error == nil) {
    40         // 网络返回空数据
    41         NSLog(@"接收到空数据");
    42     } else {
    43         NSLog(@"%@", error.localizedDescription);
    44     }
    45 }

    2.Get的异步登陆方法

     1 - (NSURLRequest *)getLoginRequest
     2 {
     3     NSString *userName = _userName.text;
     4     NSString *password = [_password.text companyMD5];
     5     NSLog(@"%@", [_password.text MD5]);
     6     NSLog(@"%@", password);
     7     
     8     // 1. 网络地址URL
     9     NSString *urlString = [NSString stringWithFormat:@"http://192.168.3.251/~apple/itcast/login.php?username=%@&password=%@", userName, password];
    10     urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    11     
    12     NSURL *url = [NSURL URLWithString:urlString];
    13     
    14     // 2. 请求
    15     // 1> url
    16     // 2> 缓存策略
    17     // 3> 超时时长
    18     // 提示:因为网络的状态是未知的,因此要使用URLRequest一定要指定超时时长
    19     // 否则会严重影响用户体验!
    20     return [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];
    21    
    22 }
    23 
    24 
    25 - (IBAction)asyncLogin
    26 {
    27     // 1. request
    28     NSURLRequest *request = [self getLoginRequest];
    29     
    30     // 异步登录
    31     // 后台耗时的任务,与界面无关的操作会放在后台线程中执行。
    32     NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    33     
    34     [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    35         // 块代码的内容会在网络访问后执行
    36         // 块代码是预先定义好的代码片段,在满足某个条件时执行的。
    37         NSLog(@"%@", [NSThread currentThread]);
    38         
    39         if (data != nil) {
    40             // 网络请求正常
    41             
    42             // 将data转换为字符串
    43             NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    44             
    45             [[NSOperationQueue mainQueue] addOperationWithBlock:^{
    46                 [self showMessageWithResult:result];
    47             }];
    48         } else if (data == nil && connectionError == nil) {
    49             // 网络返回空数据
    50             NSLog(@"接收到空数据");
    51         } else {
    52             NSLog(@"%@", connectionError.localizedDescription);
    53         }
    54     }];
    55     
    56     NSLog(@"come here");
    57 }
  • 相关阅读:
    蓝桥网试题 java 基础练习 特殊的数字
    蓝桥网试题 java 基础练习 杨辉三角形
    蓝桥网试题 java 基础练习 查找整数
    蓝桥网试题 java 基础练习 数列特征
    蓝桥网试题 java 基础练习 字母图形
    蓝桥网试题 java 基础练习 01字串
    蓝桥网试题 java 基础练习 回文数
    蓝桥网试题 java 基础练习 特殊回文数
    Using text search in Web page with Sikuli
    each of which 用法
  • 原文地址:https://www.cnblogs.com/hkyangvip/p/3496686.html
Copyright © 2011-2022 走看看