数据库总结完之后,下面来总结下网络这块,写博客的目的是为了让想学习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的更多相关文章

  1. iOS开发网络篇—NSURLConnection基本使用

    iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...

  2. iOS开发网络篇--NSURLConnection

    S简介 NSURLConnection: 作用: 1.负责发送请求,建立客户端和服务器的连接发送数据给服务器 2.并收集来自服务器的响应数据 步骤: 1.创建一个NSURL对象,设置请求路径 2.传入 ...

  3. 多线程与网络之NSURLConnection发送请求

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  4. 教你如何封装异步网络连接NSURLConnection实现带有百分比的下载

    教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2. ...

  5. swift开发网络篇—NSURLConnection基本使用

    iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...

  6. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  7. 网络&热恋NSURLConnection代理及GET¥POST请求

    1.NSURLConnection代理下载设置在本地的身骑着白马MP3 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional ...

  8. iOS开发网络篇—NSURLConnection基本使用(一)

      一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.. ...

  9. Ios之网络编程NSURLConnection

    通过NSURLConnection主要通过四个类进行网络访问:NSURL,NSURLRequest,NSMutableURLRequest,NSURLConnection 一.基本知识 (1)NSUR ...

随机推荐

  1. spring boot学习笔记2

    开场知识: spring 容器注入bean,时容器初始化的一些接口以及接口调用的时间先后顺序: 1)BeanFactoryPostProcessor 容器初始化的回调方法 * BeanFactoryP ...

  2. Android-Kotlin-区间与for&List&Map简单使用

    区间与for: package cn.kotlin.kotlin_base04 /** * 区间与for */ fun main(args: Array<String>) { /** * ...

  3. Android-HttpURLConnection-Get与Post请求登录功能

    HttpURLConnection 在这请求方式是Java包中的: AndroidManifest.xml配置权限: <!-- 访问网络是危险的行为 所以需要权限 --> <uses ...

  4. 索引视图DEMO1

    --use tempdb ----------------------在创建视图和所有底层表时,必须打开ANSI_NULLS以及QUOTED_IDENTIFIER选项 --SET ANSI_NULLS ...

  5. 扩展 StackExchange.Redis 支持实体

    一.StackExchange.Redis StackExchange.Redis是由Stack Overflow开发的C#语言Redis客户端,使用广泛,本文针对 StackExchange.Red ...

  6. .Net Mvc AutoMapper简单使用

    1.安装automapper nuget包. 2.新建一个AutoMapper配置类并实现一个静态配置方法. 方法一. using AutoMapper; using AutoMapperTest.M ...

  7. file-loader引起的html-webpack-plugin坑

    引言 最近,我们的一个后台系统要改版为基于react + redux + react-router + ant-design 技术栈,切换到当下比较新的技术来实现后台系统:在项目实施过程中,选择了基于 ...

  8. AJPFX外汇的常见形态

    AJPFX:外汇价常见形态 外汇的价格,本质上是由供求关系决定的,但是在技术分析的世界里,是什么原因导致供求关系的改变并不重要,也没有人能准确的找出所有的因素并加以判断,但是供求关系被改变后的外汇走势 ...

  9. 常见配置redis.conf介绍

    参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  daemonize no2. 当Redis以守护进程方式运行 ...

  10. Code Chef MINPOLY(计算几何+dp)

    题面 传送门 题解 我们枚举这个凸多边形\(y\)坐标最小的点\(p_i\),然后对于所有\(y\)坐标大于等于它的点极角排序 我们预处理出\(s_{j,k}\)表示三角形\(p_i,p_j,p_k\ ...