• Get&Post登录


      1 #import "MJViewController.h"
      2 
      3 @interface MJViewController ()
      4 @property (weak, nonatomic) IBOutlet UITextField *userName;
      5 @property (weak, nonatomic) IBOutlet UITextField *userPwd;
      6 
      7 @property (weak, nonatomic) IBOutlet UILabel *logonResult;
      8 
      9 @end
     10 
     11 @implementation MJViewController
     12 /**
     13  所有网络请求,统一使用异步请求!
     14  
     15  在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法
     16  GET查/POST增/PUT改/DELETE删/HEAD
     17  
     18  GET
     19  1> URL
     20  2> NSURLRequest
     21  3> NSURLConnction 异步
     22  
     23  POST
     24  1> URL
     25  2> NSMutableURLRequest
     26     .HTTPMethod = @"POST";
     27     str 从 firebug直接粘贴,或者自己写 
     28     变量名1=数值1&变量名2=数值2
     29  
     30     .HTTPBody  = [str dataUsingEncoding:NSUTF8StringEncoding];
     31  3> NSURLConnction 异步
     32  
     33  */
     34 - (IBAction)userLogon
     35 {
     36     [self postLogon];
     37 }
     38 
     39 #pragma mark - POST登录
     40 - (void)postLogon
     41 {
     42     // 1. URL
     43     NSURL *url = [NSURL URLWithString:@"http://localhost/login.php"];
     44     
     45     // 2. 请求(可以改的请求)
     46     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
     47     // ? POST
     48     // 默认就是GET请求
     49     request.HTTPMethod = @"POST";
     50     // ? 数据体
     51     NSString *str = [NSString stringWithFormat:@"username=%@&password=%@", self.userName.text, self.userPwd.text];
     52     // 将字符串转换成数据
     53     request.HTTPBody = [str dataUsingEncoding:NSUTF8StringEncoding];
     54     
     55     // 3. 连接,异步
     56     [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
     57         
     58         if (connectionError == nil) {
     59             // 网络请求结束之后执行!
     60             // 将Data转换成字符串
     61             NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
     62             
     63             // num = 2
     64             NSLog(@"%@ %@", str, [NSThread currentThread]);
     65             
     66             // 更新界面
     67             [[NSOperationQueue mainQueue] addOperationWithBlock:^{
     68                 self.logonResult.text = str;
     69             }];
     70         }
     71     }];
     72     
     73     // num = 1
     74     NSLog(@"come here %@", [NSThread currentThread]);
     75 }
     76 
     77 #pragma mark - GET登录
     78 - (void)getLogon
     79 {
     80     // 1. URL
     81     NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login.php?username=%@&password=%@", self.userName.text, self.userPwd.text];
     82     
     83     NSURL *url = [NSURL URLWithString:urlStr];
     84     
     85     // 2. Request
     86     NSURLRequest *request = [NSURLRequest requestWithURL:url];
     87     
     88     // 3. Connection
     89     // 1> 登录完成之前,不能做后续工作!
     90     // 2> 登录进行中,可以允许用户干点别的会更好!
     91     // 3> 让登录操作在其他线程中进行,就不会阻塞主线程的工作
     92     // 4> 结论:登陆也是异步访问,中间需要阻塞住
     93     [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
     94         
     95         if (connectionError == nil) {
     96             // 网络请求结束之后执行!
     97             // 将Data转换成字符串
     98             NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
     99             
    100             // num = 2
    101             NSLog(@"%@ %@", str, [NSThread currentThread]);
    102             
    103             // 更新界面
    104             [[NSOperationQueue mainQueue] addOperationWithBlock:^{
    105                 self.logonResult.text = @"登录完成";
    106             }];
    107         }
    108     }];
    109     
    110     // num = 1
    111     NSLog(@"come here %@", [NSThread currentThread]);
    112     
    113     NSURLResponse *response = nil;
    114     // 1. &response真的理解了吗?
    115     // 2. error:为什么是NULL,而不是nil
    116     // NULL是C语言的 = 0
    117     // 在C语言中,如果将指针的地址指向0就不会有危险
    118     
    119     // nil是OC的,是一个空对象发送消息不会出问题
    120 //    [response MIMEType];
    121     [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
    122 }
    123 
    124 @end
  • 相关阅读:
    感谢一个名叫“祯玥”的姑娘
    下一代互联网
    伤心时要读的三十八句
    任何企业的竞争,归根结底都是智能的竞争
    互联网创业必须过的槛(转)
    钻到牛角尖里面去,想开公司必需知道的奥秘
    重游草堂
    牛根生:我们应该学会“三换思维”
    领导者的感染力和传染力
    幸福是一种心境(转)
  • 原文地址:https://www.cnblogs.com/liuguan/p/5059915.html
Copyright © 2020-2023  润新知