ios网络编程(二)之网络连接

 上篇的连接方式皆为同步连接,这次就详细介绍一下网络连接的方式



一、连接方式分两种:同步和异步

同步连接

1, 使用 [NSURLConnection sendSynchronousRequest:]方法

2,会出现卡顿现象

异步连接分两种:block 和 delegate

1),  block 的使用方法是[NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

}];

该方法需要两个参数:request 请求

queue 队列,一般情况是currentQueue

注意:

block里面的代码不会立即执行,只有当服务器请求完数据之后才会执行。

2),  delegate的使用方法:

1,带delegate的异步连接将数据下载进度封装在了协议中,故一般情况下会使用此连接方式

2, 带delegate的连接也是异步连接,界面先出来,之后才获取到数据,故问题和block一样

注意:

代理中一个名为didReceiveData:方法, 该data不是已经下载的data,需要自己拼接



二、同步连接步骤

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

NSURLResponse *response = nil;

NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:requset returningResponse:&response error:&error];



三、异步连接

1,block方法

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

[NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// 在此可以解析数据,展示图片什么的

}];

2, 代理方法

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

接受协议后代理方法有

接收响应

- (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{

}

时间: 2024-11-11 20:16:58

ios网络编程(二)之网络连接的相关文章

Linux网络编程二、tcp连接API

一.服务端 1.创建套接字: int socket(int domain, int type, int protocol); domain:指定协议族,通常选用AF_INET. type:指定socket类型,TCP通信下使用SOCK_STREAM. protocol:指定协议,通常为0. 返回值:成功则返回新socket的文件描述符,失败返回-1. 头文件:sys/socket.h     sys/types.h 2.绑定套接字 int bind(int sockfd, struct sock

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 ZFViewControll

Linux网络编程(二)

服务套和客户机的信息函数 1.字节转换函数 在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的, 比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反. 为了统一起来,在Linux下面,有专门的字节转换函数. unsigned long int htonl(unsigned long int hostlong)     unsigned short int htons(unisgned short int hostshort)     unsigned

安卓第八天笔记--网络编程二

安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P

网络编程(二)

网络编程(二)    >>>思维导图>>>中二青年 基于TCP协议的Socket套接字 server端 import socket sk = socket.socket() sk.bind(('127.0.0.1',8898)) # 把地址绑定到套接字 sk.listen() # 监听链接 conn,addr = sk.accept() # 接受客户端链接 ret = conn.recv(1024) # 接收客户端信息 print(ret) # 打印客户端信息 conn

winform网络编程(二)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

Android网络编程之获取网络上的XML

Android网络编程之获取网络上的XML 请尊重他人的劳动成果,转载请注明出处:Android网络编程之获取网络上的XML 为要获取网络上的XML所以需要服务器端提供的支持. 一.创建服务器端: 服务器端项目结构: 服务器端运行效果图: 第一步:创建业务所需的JavaBean package com.jph.server.model; import java.util.Date; /** * 新闻实体类 * @author jph * Date:2014.09.26 */ public cla

javaAPI_网络编程基础_网络编程基础1

网络编程基础 1.网络编程概述 (1).计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件 及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. (2).网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 2.网络模型概述以及图解 (1).计算机网络之间以何种规则进行通信,就是网络模型研究问题. (2).网络模型一般是指 OSI(Open System Interconnection开放系

Android网络编程之获取网络上的Json

Android网络编程之获取网络上的Json 请尊重他人的劳动成果,转载请注明出处:Android网络编程之获取网络上的Json 为要获取网络上的Json所以需要服务器端提供的支持. 一.创建服务器端: 服务器端项目结构: 服务器端运行效果图: 第一步:创建业务所需的JavaBean package com.jph.sj.model; import java.util.Date; /** * 新闻实体类 * @author jph * Date:2014.09.26 */ public clas

网络编程练习 -- 检测网络状态

LWTViewController.m // // LWTViewController.m // 网络编程练习 -- 检测网络状态 // // Created by apple on 14-7-2. // Copyright (c) 2014年 lwt. All rights reserved. // #import "LWTViewController.h" #import "Reachability.h" @interface LWTViewController