简单使用NSURLConnection、NSURLRequest和NSURL
以下是代码,凝视也写得比較清楚:
头文件须要实现协议NSURLConnectionDelegate和NSURLConnectionDataDelegate
//
// HttpDemo.h
// MyAddressBook
//
// Created by hherima on 14-6-23.
// Copyright (c) 2014年. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> @interface HttpDemo : NSObject<NSURLConnectionDelegate, NSURLConnectionDataDelegate>
{
NSMutableData *receivedData;
NSURLConnection *theConncetion;
}
@end
源文件
//
// HttpDemo.m
// MyAddressBook
//
// Created by hherima on 14-6-23.
// Copyright (c) 2014年. All rights reserved.
// #import "HttpDemo.h"
@implementation HttpDemo
/*
NSURLConnection 提供了非常多灵活的方法下载URL内容,也提供了一个简单的接口去创建和放弃连接,同一时候使用非常多的delegate方法去支持连接过程的反馈和控制 举例:
1、先创建一个NSURL
2、再通过NSURL创建NSURLRequest,能够指定缓存规则和超时时间
3、创建NSURLConnection实例,指定NSURLRequest和一个delegate对象
假设创建失败,则会返回nil,假设创建成功则创建一个NSMutalbeData的实例用来存储数据
*/
- (id)init {
self = [super init];
// Override point for customization after application launch.
NSURLRequest* theRequest = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.baidu.com"]//
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60.0];
//当收到initWithRequest: delegate: 消息时,下载会马上開始,在代理(delegate)
//收到connectionDidFinishLoading:或者connection:didFailWithError:消息之前
//能够通过给连接发送一个cancel:消息来中断下载
theConncetion=[[NSURLConnection alloc]
initWithRequest:theRequest delegate:self];
if(theConncetion)
{
//创建NSMutableData
receivedData = [NSMutableData data];
}
else
{
//创建失败;
} return self;
} //当server提供了足够客户程序创建NSURLResponse对象的信息时。代理对象会收到一个connection:didReceiveResponse:消息。在消息内能够检查NSURLResponse对象和确定数据的预期长途,mime类型。文件名称以及其它server提供的元信息 //【要注意】,一个简单的连接也可能会收到多个connection:didReceiveResponse:消息当server连接重置或者一些罕见的原因(比方多组mime文档)。代理都会收到该消息这时候应该重置进度指示,丢弃之前接收的数据
-(void)connection:(NSURLConnection *)connectiondidReceiveResponse:(NSURLResponse*)response
{
[receivedData setLength:0];
} //当下载開始的时候,每当有数据接收,代理会定期收到connection:didReceiveData:消息代理应当在实现中储存新接收的数据,以下的样例既是如此
-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
} //当代理接收到连接的connection:didFailWithError消息后,对于该连接不会在收到不论什么消息
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
{
theConncetion = nil; NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]); }
//数据完成下载,最后,假设连接请求成功的下载,代理会接收connectionDidFinishLoading:消息代理不会收到其它的消息了,在消息的实现中。应该释放掉连接
-(void)connectionDidFinishLoading:(NSURLConnection*)connection
{
//do something with the data
NSString *s = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
NSLog(@"succeeded %@",s);
theConncetion = nil;
[receivedData setLength:0];
}
@end
简单使用NSURLConnection、NSURLRequest和NSURL的更多相关文章
- OC - 12.NSURLRequest与NSURLConnection
##NSURLRequest NSURLRequest封装了一次网络请求所需要的数据,主要封装了以下信息: 请求路径(URL) 请求方法(GET或POST) 请求头 请求体 超时参数 NSURLReq ...
- iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充
一.NSURLConnection补充 前面提到的NSURLConnection有些知识点需要补充 NSURLConnectionDataDelegate的代理方法有一下几个 - (void)conn ...
- NSURLConnection、NSURLSession
NSURLConnection 1.准备网络资源地址:URL 注意:由于URL支持26个英文字母,数字和少数的几个特殊字符. 因此对于URL中包含非标准URL的字符,需要进行编码. iOS提供了函 ...
- iOS 网络编程:NSURLConnection
1 简介 1.1 概念 NSURLConnection类似NSURLSession,都是进行网络数据传输的.其中NSURLSession是NSURLConnection的替代版本,目前IOS9.0几乎 ...
- iOS网络通信http之NSURLConnection
iOS网络通信http之NSURLConnection 移动互联网时代,网络通信已是手机终端必不可少的功能.我们的应用中也必不可少的使用了网络通信,增强客户端与服务器交互.这一篇提供了使用NSURLC ...
- 教你如何封装异步网络连接NSURLConnection实现带有百分比的下载
教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2. ...
- WebView loadRequest请求错误"NSURLConnection finished with error - code -1022"
执行下面代码 [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www ...
- post NSURLConnection请求网络数据
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- iOS网络-01-NSURLRequest与NSURLConnection
NSURLRequest NSURLRequest封装了一次网络请求所需要的数据,主要封装了以下信息: 请求路径(URL) 请求方法(GET或POST) 请求头 请求体 超时参数 NSURLReque ...
随机推荐
- IMP数据文件时ORA-00959错误分析
有时间模拟一下ORA-00959的测试分析.
- 安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
安装PHP时,make步骤报错make: *** [ext/gd/gd.lo] Error 1 /usr/local/src/LAMP+memcahed+catci/php-5.4.0/ext/gd/ ...
- HDU 4632 CF 245H 区间DP(回文)
先说HDU 4632这道题,因为比较简单,题意就是给你一个字符串,然后给你一个区间,叫你输出区间内所有的回文子序列,注意是回文子序列,不是回文字串. 用dp[i][j]表示区间[i,j]内的回文子序列 ...
- java web 学习(2)
今天突然想到写的测试代码最好随时取出来,在不同的机器上不用老是拷来拷去,还真找着了免费的Svn, svn://www.svn999.com/luhouxiang.javastudy,暂时学习的工程代码 ...
- 关于PHPstorm 使用技巧
慢慢更新,一点点积累,都是自己在使用中遇到的问题 设置:(2016.4.15) 1:注释模板,phpstorm 有非常强大的注释模板,可以根据自己的需求随时更改,并设置快捷键,非常方便 新文件注释 P ...
- 周赛F题 POJ 1458(最长公共子序列)
F - F Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Description ...
- Codeforces 301_div.2_Ice Cave(BFS走冰块)
Ice Cave Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descripti ...
- 你不知道的JavaScript(作用域和闭包)
作用域和闭包 ・作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程. 编译器:负责语法分析及代码生成等. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非 ...
- spring获取properties
实际项目中,通常将一些可配置的定制信息放到属性文件中(如数据库连接信息,邮件发送配置信息等),便于统一配置管理.例中将需配置的属性信息放在属性文件/WEB-INF/configInfo.propert ...
- Mifare 0简介
Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本.小容量的卡片.低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片 ...