网络之NSURLConnection
数据库总结完之后,下面来总结下网络这块,写博客的目的是为了让想学习IOS的不用去培训机构就能学习。
// // ViewController.m // UrlConnection // // Created by City--Online on 15/4/27. // Copyright (c) 2015年 CYW. All rights reserved. // #define imageUrl @"http://assets.sbnation.com/assets/2512203/dogflops.gif" #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> { UIImageView *imageView; UIActivityIndicatorView *indicatorView; UIProgressView *progessView; UILabel *progressLabel; NSMutableData *imgData; long long allBytes; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; imgData=[NSMutableData data]; [self initUI]; [self startDownLoadImage]; } -(void)startDownLoadImage { NSURL *url=[NSURL URLWithString:imageUrl]; NSURLRequest *request=[NSURLRequest requestWithURL:url]; // block // NSOperationQueue *queue=[NSOperationQueue mainQueue]; // [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // if (data) { // imageView.image=[UIImage imageWithData:data]; // [indicatorView stopAnimating]; // // } // }]; // 代理 [NSURLConnection connectionWithRequest:request delegate:self]; // NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES]; // [connection start]; } //连接失败 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"连接失败"); } //获得响应 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { imgData.length=0; //获取文件大小 allBytes=[response expectedContentLength]; //获取文件名 NSString *filename=[response suggestedFilename]; NSLog(@"文件名:%@",filename); //获取文件类型 NSString *contentType=[response MIMEType]; NSLog(@"文件类型:%@",contentType); //状态码 NSHTTPURLResponse *httpResponse=(NSHTTPURLResponse*)response; NSInteger statusCode=[httpResponse statusCode]; NSLog(@"状态码:%ld",statusCode); //响应头信息 NSDictionary *allHeaderFields=[httpResponse allHeaderFields]; NSLog(@"%@",allHeaderFields); } //接收到数据 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //追加数据 [imgData appendData:data]; //计算进度 CGFloat progress=(CGFloat)imgData.length/allBytes; progessView.progress=progress; progressLabel.text=[NSString stringWithFormat:@"%2f",progress]; NSLog(@"%f",progress); } //响应完成 -(void)connectionDidFinishLoading:(NSURLConnection *)connection { imageView.image=[UIImage imageWithData:imgData]; [indicatorView stopAnimating]; } -(void)initUI { imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 40, 300, 300)]; //默认图片 imageView.image = [UIImage imageNamed:@"photo"]; [self.view addSubview:imageView]; indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; indicatorView.frame = CGRectMake(0, 0, 60, 60); indicatorView.center = CGPointMake(imageView.frame.size.width/2, imageView.frame.size.height/2); //indicatorView.hidesWhenStopped = NO; [indicatorView startAnimating]; [imageView addSubview:indicatorView]; //CGRectGetMaxY(imageView.frame) == imageView.frame.origin.y + imageView.frame.size.height //CGRectGetMaxX(progessLabel.frame) == progessLabel.frame.origin.x + progessLabel.frame.size.width //进度条 progessView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; progessView.frame = CGRectMake(imageView.frame.origin.x, CGRectGetMaxY(imageView.frame)+20, 200, 20); [self.view addSubview:progessView]; progressLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(progessView.frame), progessView.frame.origin.y - 10, 80, 20)]; progressLabel.text = @"0.00"; progressLabel.textAlignment = NSTextAlignmentCenter; [self.view addSubview:progressLabel]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
网络之NSURLConnection的更多相关文章
- iOS开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
- iOS开发网络篇--NSURLConnection
S简介 NSURLConnection: 作用: 1.负责发送请求,建立客户端和服务器的连接发送数据给服务器 2.并收集来自服务器的响应数据 步骤: 1.创建一个NSURL对象,设置请求路径 2.传入 ...
- 多线程与网络之NSURLConnection发送请求
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 教你如何封装异步网络连接NSURLConnection实现带有百分比的下载
教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2. ...
- swift开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
- iOS网络1——NSURLConnection使用详解
原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...
- 网络&热恋NSURLConnection代理及GET¥POST请求
1.NSURLConnection代理下载设置在本地的身骑着白马MP3 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional ...
- iOS开发网络篇—NSURLConnection基本使用(一)
一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.. ...
- Ios之网络编程NSURLConnection
通过NSURLConnection主要通过四个类进行网络访问:NSURL,NSURLRequest,NSMutableURLRequest,NSURLConnection 一.基本知识 (1)NSUR ...
随机推荐
- centeros6.8 下安装mysql教程
1.1 安装Mysql 1.1.1 检查 l 检查是否已安装mysql的相关包 [root@localhost ~]# rpm -qa|grep -i mysql 一般情况下,centeros系统中会 ...
- PCB中实现元器件旋转一个角度放置
我们常常放置器件都是横着或者竖着的...但是有时候需要器件能旋转一个角度放更方便的话,可以这样 设置器件的属性.....
- C#调用haskell遭遇Attempted to read or write protected memory
1. Haskell的代码如下: 上面的代码中readMarkdown与writeHtmlString是pandoc中的函数,newString的作用是将String转换为IO CString. 2. ...
- 通过 NewLife.XCode 迁移任意现有数据库到任意数据库
通过 NewLife.XCode 迁移任意现有数据库到任意数据库(附分表分库方法) 本文背景是将其他系统的数据库迁移到另一个数据库(仅需 20 行代码),也可以作为项目迁移用,生成自己系统的专属实体代 ...
- 第二节:创建模型,使用Code First,配置映射关系
这一节,实现模型的创建,配置映射关系 使用Code First数据迁移. 创建模型 一,首先创建几个接口:实体接口,聚合根接口,值对象接口 1,实体接口: 2,聚合根接口: 3,值对象接口: 二,模型 ...
- C# 使用Google Protocol Buffers
Google Protocol Buffers 使用3.0版本 下载protoc.exe 下载链接 https://github.com/protocolbuffers/protobuf/releas ...
- Swift5 语言指南(二十二) 扩展
扩展为现有的类,结构,枚举或协议类型添加新功能.这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模).扩展类似于Objective-C中的类别.(与Objective-C类别不同,Swift扩展 ...
- Shell - 简明Shell入门03 - 字符串(String)
示例脚本及注释 #!/bin/bash str="Shell" str2="Hello $str !" str3="Hello ${str} !&qu ...
- CentOS 6(64-bit) + Nginx搭建静态文件服务器
Nginx搭建静态文件服务器 使用命令打开Nginx配置文件: sudo vim /etc/nginx/conf.d/default.conf 将配置改为: server { ...... ..... ...
- odoo 开发基础 -- 视图之xpath语法
odoo 视图函数 在整个项目文件中,结构并不是十分明显,虽然它也遵循MVC设计,类比django的MTV模式,各个模块区分的十分明显,在Odoo中,视图的概念不是特别明显,很多时候,我们会将调用模型 ...