//
// 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的同步连接与异步连接的更多相关文章

  1. iOS网络编程-ASIHTTPRequest框架同步请求-备用

    在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRe ...

  2. iOS网络编程模型

    iOS网络编程层次结构也分为三层: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServ ...

  3. IOS网络编程:HTTP

    IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...

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

    一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...

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

    在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下: 关于网络请求的重要性我想不用多说了吧!!!对 ...

  6. 网游中的网络编程3:在UDP上建立虚拟连接

    目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...

  7. IOS网络编程——第三方类库

    IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

  8. iOS 网络编程

    iOS 开发中所需的数据基本都是来自网络,网络数据请求是 iOS 编程中必不可少的,应该熟练掌握网络请求. 网络请求方式有 :GET , POST , PUT ,DELETE 等,其中常用的就是 GE ...

  9. iOS 网络编程:socket

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

随机推荐

  1. RCU-数据库初始化参数

    C:\Windows\System32>sqlplus sys/As123456 as sysdba SQL> show parameter processes; SQL> shut ...

  2. Oracle工程建设行业解决方案

    为何选择Oracle工程建设行业解决方案? Oracle为工程建设企业提供一套全面.开放且集成的业务管理软件.服务器和存储解决方案.这些解决方案经过集成设计,能够实现卓越性能,从而优化业务的方方面面. ...

  3. C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件

    1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小 ...

  4. EasyUI个人项目晒图(续)

    晒自己做的一个管理系统(清新风格)EasyUI 这是自己上一次的文章了,只是给大家看一下自己的美观度是不是还是停留在新手的阶段!反正我自己认为我已经不是一个新手了吧!虽然技术永远学不完,我可以说,我和 ...

  5. JSChart_页面图形报表

    首先在页头的"head"中加上: $(document).ready(function() { //myData与colors变量  是做演示用的,可以直接赋值给myChart就可 ...

  6. JavaSE——TCP网络编程(二)

    ServerSocket 类与Socket 类的不同用法: ServerSocket类: 创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如:    Serv ...

  7. MAC OS设置JDK小结

    开始折腾mac pro,在网上找了些资料,自己也尝试了一下,特在这里做个小结. mac中JDK的位置 OSX默认的JDK /System/Library/Frameworks/JavaVM.frame ...

  8. zend framework2学习(一)初步入门

    声明:本人菜鸟一枚,由于项目中需要用到zf2框架进行开发,在此记载学习使用过程中的点点滴滴.才疏学浅,请多指教............. ------------------------------- ...

  9. JavaScript 学习—— js获取行间样式和非行间样式

    1. 问题引入 <head> <style> #div1{ width:150px; height:200px; position:absolute; left:-150px; ...

  10. 通过原生js添加div和css

    function createStyle(){ return"*{padding:0;margin:0;border:0}.loading{width:640px;height:1024px ...