首页 > 代码库 > IOS发送网络请求 心得

IOS发送网络请求 心得

路线:
  实例化URL (网络资源)
      利用 URL 建立URLReques (网络请求)
        默认是get 请求
        对于post 请求 需要创建请求数据体
             利用 URLConnection 发送网络请求 (建立连接)
    获得结果
  或者: (也就是:)
    URL
    Reques
    Connection 



  HTTP   中利用  URLReques 建立网络请求方式:  GET & POST  

           get 请求 是 从服务器中取 
           post 请求 是 往服务器中添加东西 

   从 URL角度  get不安全 能看到密码以及一些属性 
     从服务器角度看  get 是 安全的  

 在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法 GET/POST/PUT/DELETE/HEAD

   GET
    1> URL  (路径) 
     NSString *urlStr = [NSStringstringWithFormat:@"http://xxxxxxxxxx?username=%@&password=%@", self.userName.text, self.userPwd.text];
     
      NSURL *url = [NSURLURLWithString:urlStr];
    2> NSURLRequest (请求)

     NSURLRequest *request = [NSURLRequestrequestWithURL:url];   

  3> NSURLConnction 异步 ( 连接)
         小的数据直接利用系统包装好的方法  :  sendAsynchronousRequest:queue:completionHandler:^() 方法进行连接   
^(里面填写连接之后的操作)
 

       如果是大的数据 就必须用代理方法 :  NSURLConnection *connection = [NSURLConnectionconnectionWithRequest:request delegate:self];
  接收到相应时调用  

      - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
  接收到数据时调用   

      - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  接受完成时调用 

      - (void)connectionDidFinishLoading:(NSURLConnection *)connection
  网络出错时调用 

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


  POST   

 1> URL  (路径)
     NSURL *url = [NSURLURLWithString:@"http://xxxxxxxxxxxx.php"];   

 2> NSMutableURLRequest (可变的请求)
     NSMutableURLRequest *request =[NSMutableURLRequestrequestWithURL:url];
         .httpMethod = @"POST”; (默认是GET 请求)
         request.HTTPMethod = @"POST";         

     str firebug直接粘贴,或者自己写       变量名1=数值1&变量名2=数值2      

     NSString *str = [NSStringstringWithFormat:@"username=%@&password=%@",self.userName.text, self.userPwd.text];                   .HTTPBody = [str dataUsingEncoding:NSUTF8StringEncoding];
       request.HTTPBody = [str dataUsingEncoding:NSUTF8StringEncoding];
   

 3> NSURLConnction 异步
     小的数据也是直接利用系统包装好的方法  :   sendAsynchronousRequest:queue:completionHandler:^() 方法进行连接   
^(里面填写连接之后的操作)

所有网络请求 都是使用 异步请求 NSURLConnction
     思路:
       1> 登录完成之前,不能做后续工作!       

    2> 登录进行中,可以允许用户干点别的会更好!       

    3> 让登录操作在其他线程中进行,就不会阻塞主线程的工作       

    4> 结论:登陆也是异步访问,中间需要阻塞住