iOS网络编程--NSConnection的同步连接与异步连接

 1 //
 2 //  ZFViewController.m
 3 //  0628-表单验证
 4 //
 5 //  Created by zfan on 14-6-28.
 6 //  Copyright (c) 2014年 zfan. All rights reserved.
 7 //
 8
 9 #import "ZFViewController.h"
10 #import "MBProgressHUD+MJ.h"
11
12 @interface ZFViewController ()
13
14 @property (weak, nonatomic) IBOutlet UITextField *userNameTextField;
15 @property (weak, nonatomic) IBOutlet UITextField *passWordTextField;
16
17 @end
18
19 @implementation ZFViewController
20
21 - (void)viewDidLoad
22 {
23     [super viewDidLoad];
24 }
25
26 - (IBAction)login:(id)sender
27 {
28     //验证账号和密码是否合法
29     if (self.userNameTextField.text.length == 0)
30     {
31         [MBProgressHUD showError:@"请输入账号"];
32         return;
33     }
34
35     if (self.passWordTextField.text.length == 0)
36     {
37         [MBProgressHUD showError:@"请输入密码"];
38         return;
39     }
40
41     //取出账号和密码
42     NSString *userName = self.userNameTextField.text;
43     NSString *password = self.passWordTextField.text;
44
45     //生成URL
46     NSString *urlPath = [NSString stringWithFormat:@"http://192.168.1.101:8080/ZFServer/login?username=%@&pwd=%@", userName, password];
47     NSURL *url = [NSURL URLWithString:urlPath];
48
49     //生成连接
50     NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
51
52     //建立连接并接收返回数据(同步执行)
53 //    NSData *loginData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];
54
55
56     //建立连接并接收返回数据(异步执行)
57     NSOperationQueue *queue = [[NSOperationQueue alloc] init];
58     [NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
59         NSData *loginData = data;
60         NSLog(@"%ld", (unsigned long)loginData.length);
61     }];
62
63     //打印返回的数据长度
64     NSLog(@"%@", self.userNameTextField.text);
65     NSLog(@"%@", self.passWordTextField.text);
66 //    NSLog(@"%ld", (unsigned long)loginData.length);
67 }
68
69 @end

知识要点:

1>通过NSString类方法拼接字符串,生成完整的URL路径;

2>通过NSURLRequest的类方法,利用URL建立一个NSURLRequest连接实例;

3>通过NSConnection的类方法建立连接并接受返回数据,可通过同步方式和异步方式实现:

  3.1>同步方式

[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];

  此方法不会新建线程,返回值为NSData,由于未新建线程,因此在该方法未完成前,线程不会继续向下运行,容易造成卡死;

  3.2>异步方式

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
  NSData *loginData = data;
  NSLog(@"%ld", (unsigned long)loginData.length);
}];

  此方法会建立一个新的线程用于接受网络端返回数据,返回值为void,当数据接受完毕后会执行block中的语句;

 

iOS网络编程--NSConnection的同步连接与异步连接

时间: 2024-08-05 21:27:09

iOS网络编程--NSConnection的同步连接与异步连接的相关文章

iOS网络编程同步GET方法请求编程

iOS SDK为HTTP请求提供了同步和异步请求两种不同的API,而且可以使用GET或POST等请求方法.我们先了解其中最为简单的同步GET方法请求. 首先实现查询业务,查询业务请求可以在主视图控制器MasterViewController类中实现,其中MasterViewController.h代码如下: Java代码   #import <UIKit/UIKit.h> #import “NSString+URLEncoding.h” #import “NSNumber+Message.h”

iOS网络编程笔记——Socket编程

一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是TCP/IP协议的一个十分流行的编程接口.一个socket由一个IP地址和一个端口号唯一确定.TCP/IP协议的传输层又有两种协议:TCP(传输控制协议)和UDP(用户数据报协议).TCP是基于连接的,而UDP是无连接的:TCP对系统资源的要求较多,而UDP少:TCP保证数据的正确性而UDP可能丢包:

IOS网络编程:HTTP

IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连接,然后发送一个请求.服务器受到请求处理后发送一个响应向客户端传递数据.然后客户端可以继续发送请求或者关闭这个TCP连接. HTTPS:在TCP连接建立后,发送请求之前,需要建立一个一个SSL会话. request方法和它们的用途 iOS的NSURLRequest和它的子类NSMutableURLR

iOS网络编程开发-NSURLConnection基本使用

iOS网络编程开发-NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSU

ios网络编程(入门级别)-- 基础知识

在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下: 关于网络请求的重要性我想不用多说了吧!!!对于移动客户端来说,网络的重要性不言而喻,常见的网络请求有GET, POST,今天来看一下两种网络请求的实现方式. 第一部分   小编的理解 一.两种网络请求--POST请求与GET请求的异同(这里小编只讨论的是异步链接) GET的语义是获取指定URL上的资源,将数据按照Variable = Valu

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的

iOS网络编程开发—HTTP协议

iOS网络编程开发—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.

iOS网络编程开发GET请求和POST请求

iOS网络编程开发GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; NSURL *url=[NSURL URLWithString:urlStr]