iOS网络编程--NSConnection的同步连接与异步连接
//
// ZFViewController.m
// 0628-表单验证
//
// Created by zfan on 14-6-28.
// Copyright (c) 2014年 zfan. All rights reserved.
// #import "ZFViewController.h"
#import "MBProgressHUD+MJ.h" @interface ZFViewController () @property (weak, nonatomic) IBOutlet UITextField *userNameTextField;
@property (weak, nonatomic) IBOutlet UITextField *passWordTextField; @end @implementation ZFViewController - (void)viewDidLoad
{
[super viewDidLoad];
} - (IBAction)login:(id)sender
{
//验证账号和密码是否合法
if (self.userNameTextField.text.length == )
{
[MBProgressHUD showError:@"请输入账号"];
return;
} if (self.passWordTextField.text.length == )
{
[MBProgressHUD showError:@"请输入密码"];
return;
} //取出账号和密码
NSString *userName = self.userNameTextField.text;
NSString *password = self.passWordTextField.text; //生成URL
NSString *urlPath = [NSString stringWithFormat:@"http://192.168.1.101:8080/ZFServer/login?username=%@&pwd=%@", userName, password];
NSURL *url = [NSURL URLWithString:urlPath]; //生成连接
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; //建立连接并接收返回数据(同步执行)
// NSData *loginData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil]; //建立连接并接收返回数据(异步执行)
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);
}]; //打印返回的数据长度
NSLog(@"%@", self.userNameTextField.text);
NSLog(@"%@", self.passWordTextField.text);
// NSLog(@"%ld", (unsigned long)loginData.length);
} @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的同步连接与异步连接的更多相关文章
- iOS网络编程-ASIHTTPRequest框架同步请求-备用
在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRe ...
- iOS网络编程模型
iOS网络编程层次结构也分为三层: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServ ...
- IOS网络编程:HTTP
IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...
- iOS网络编程笔记——Socket编程
一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...
- ios网络编程(入门级别)-- 基础知识
在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下: 关于网络请求的重要性我想不用多说了吧!!!对 ...
- 网游中的网络编程3:在UDP上建立虚拟连接
目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...
- IOS网络编程——第三方类库
IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他
- iOS 网络编程
iOS 开发中所需的数据基本都是来自网络,网络数据请求是 iOS 编程中必不可少的,应该熟练掌握网络请求. 网络请求方式有 :GET , POST , PUT ,DELETE 等,其中常用的就是 GE ...
- iOS 网络编程:socket
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- 使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号
最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常 ...
- WebApi传参总动员(二)
上篇,从最简单的string入手.本篇演示了从请求的输入流中获取实体.api: public class ValuesController : ApiController { [HttpPost] p ...
- sql server:compare data from two tables
--Comparing data between two tables in SQL Server --Create two Tables-- CREATE TABLE TableA(ID Int, ...
- sql 两列相加存到另一列
假设表table1有a.b两个列,想生成另一个列为a列值+b列值计算列添加语句如下ALTER TABLE table1ADD c AS a+b
- mysql 数据类型,字符集
数据类型 1,数值类型2,字符串类型3,日期和时间4,ENUM和SET5,几何数据类型 数据类型选项 unsigned 无负值 zerofill 数值显示有影响,会前置0来填充不 ...
- 使用PowerQuery操作OData数据
Excel是我们耳熟的办公软件.PowerQuery是一个允许连接多种数据源的Excel插件.它能从一个网页上智能查询数据.使用PowerQuery能合并数据集使用join,merg ...
- Design Patterns (简单工厂模式)
文章很长很精彩,如是初学请耐心观看.(大神请绕道!) 简单工厂模式: 1.创建型模式 2.简单工厂模式概述 3.简单工厂模式的结构与实现 4.简单工厂模式的应用实例 5.创建对象与使用对象 6.简单工 ...
- 【Android】开源项目UI控件分类汇总之ProgressBar
Android开发的宝库越来越多,我开发中有需要的组件,主要参考Trinea的大作Android开源项目分类汇总(包含了后面的绝大多数).CSDN上直接拿来用!最火的Android开源项目还有CSDN ...
- jQuery Devrama Slider 幻灯片
Devrama Slider 是个图像滑块,带有许多非常有趣的特性. 它不仅支持图像还支持 HTML 内容. 响应式 方便 CSS3 转换 转换效果 进度条 高级的预加载和延迟加载 CSS 自定义 用 ...
- 【使用 DOM】使用 DOM 元素
1. 使用元素对象 HTMLElement对象提供了一组属性,可以用它们来读取和修改被代表的数据.下表介绍了这些属性. 下面代码展示了如何使用表中所列的一些基本属性. <!DOCTYPE htm ...