1.导入代理<NSURLConnectionDataDelegate>

 @interface ViewController ()<NSURLConnectionDataDelegate>
{
long long alllength; //下载总长度
long long currlenth; //当期下载长度
}
//存放下载的mp3 数据流
@property(nonatomic,strong)NSMutableData *msicDate;
//下载进度显示
@property(nonatomic,strong)UIProgressView *msicProgress;
//下载按钮
@property(nonatomic,strong)UIButton *but;
//音乐播放
@property(nonatomic,strong)AVAudioPlayer *player;
 //添加下载图片地址
NSString *path=@"http://pic1.nipic.com/2008-10-27/200810278105878_2.jpg"; //调用下载图片方法
[self addTheimg:path]; //进度条设置
self.msicProgress =[[UIProgressView alloc]initWithFrame:CGRectMake(, , , )];
self.msicProgress.progress=;
//设置下载进度颜色
self.msicProgress.progressTintColor=[UIColor colorWithRed:0.007 green:0.868 blue:0.000 alpha:1.000];
//进度条背景颜色
self.msicProgress.trackTintColor=[UIColor grayColor]; //下载按钮点击下载
self.but=[UIButton buttonWithType:UIButtonTypeCustom];
_but.frame=CGRectMake(, , , );
[_but setTitleColor:[UIColor whiteColor]forState:UIControlStateNormal];
[_but setTitle:@"下载" forState:UIControlStateNormal];
_but.backgroundColor=[UIColor orangeColor];
[_but addTarget:self action:@selector(plarmusic:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_msicProgress];
[self.view addSubview:_but];

方法的实现

 //按钮点击时间相应方法
-(void)plarmusic:(UIButton *)sender
{
//歌曲下载总的长度
alllength=;
//当前获取的量
currlenth = ;
self.msicDate =[[NSMutableData alloc]init];
//设置歌曲下载的地址
NSString *path=@"http://yinyueshiting.baidu.com/data2/music/124345627/124104509190800128.mp3?xcode=cb12e87f8333e5370d9b8f0c677c76d2";
NSURL *url=[NSURL URLWithString:path];
//方式1 网络请求
NSURLRequest *requst=[NSURLRequest requestWithURL:url];
//方式2
//NSURLRequest *resq=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; //使用代理进行请求 创建连接服务器
[NSURLConnection connectionWithRequest:requst delegate:self];
}
 //实现网络请求代理方法
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//获取要下载的MP3 的长度,收到响应即可得知,不用下载完毕
//此代理方法只执行一次,获取总的数据量
alllength =[response expectedContentLength];
} //获取每次下载的数据量,此方法可执行多次
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//将每次下载的数据放入总得数据区域内
[self.msicDate appendData:data];
//将本次获取的数据长度追加到当期长度上
currlenth +=data.length;
//更新进度条
self.msicProgress.progress=(float)currlenth/alllength;
} //下载结束调用,播放音乐
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error=nil;
//下载完成后,初始化player 然后进行歌曲播放
self.player = [[AVAudioPlayer alloc]initWithData:self.msicDate error:&error];
[self.player play];
} //请求错误调用
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
if (error) {
NSLog(@"error == %@",error);
}
}
 //调用图片的方法
-(void)addTheimg:(NSString *)path
{
// 1.通过字符串创建一个url
NSString *imgstr=path;
NSURL *imgurl=[NSURL URLWithString:imgstr]; //2. 创建网络请求
NSURLRequest *requst=[NSURLRequest requestWithURL:imgurl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; NSError *error=nil;
//3. 链接服务器
NSData *imgDate = [NSURLConnection sendSynchronousRequest:requst returningResponse:nil error:&error];
if (error)
{
//如果错误,打印错误
NSLog(@"%@",error);
}else
{
//如果找到图片,创建一个图片视图接收图片
UIImageView *img=[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
img.image=[UIImage imageWithData:imgDate];
//将图片显示在视图
[self.view addSubview:img];
} }

iOS 通过网络请求获取图片的下载歌曲的更多相关文章

  1. ios 从网络上获取图片并在UIImageView中显示

    ios 从网络上获取图片   -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIIm ...

  2. ios 从网络上获取图片

    -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ...

  3. 【iOS开发-从网络上获取图片尺寸】

    实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...

  4. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

  5. AFNetworking网络请求与图片上传工具(POST)

    AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...

  6. ios中摄像头/相册获取图片压缩图片上传服务器方法总结

    本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下.     这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...

  7. Android 多线程:使用Thread和Handler (从网络上获取图片)

    当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...

  8. css3如何让div一直循环自转圈,附带:网络请求通知图片一直在转圈实例

    css3如何让div一直循环自转圈 代码如下: div{ -webkit-transition-property: -webkit-transform; -webkit-transition-dura ...

  9. iOS开发网络请求——大文件的多线程断点下载

    iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大 ...

随机推荐

  1. Linux 用C语言实现简单的shell(1)

    发一波福利,操作系统的实验内容,大家可以借鉴一下,不过我的代码可能也存在一定的问题. 因为在一开始老师是一节一节课教的,当时并不知道后面还会用输入输出重定向,管道等一系列问题,我的兴趣也不在这个方面也 ...

  2. 2017-2018-2 《网络对抗技术》 20155322 第二周 Exp1 PC平台逆向破解(5)M

    #2017-2018-2 <网络对抗技术> 20155322 第二周 Exp1 PC平台逆向破解(5)M [博客目录] 1-实践目标 1.1-实践介绍 1.2-实践内容 1.3-实践要求 ...

  3. Ubuntu genymotion

    官网注册帐号 下载genymotion-[VERSION]_[ARCH].bin 进入android studio In Android Studio, go to File > Setting ...

  4. [agc006F]Blackout

    Description 传送门 Solution 这道题的操作是真的得服气..感谢各位大佬的指导. 首先我们看看答案的最大值:1010.哦不,这不可能存在,我们肯定不可能一轮轮枚举点进行扩展的. 所以 ...

  5. win32api 找不到指定的模块

    pywin32 安装后 import win32api 出现ImportError: DLL load failed: 找不到指定的模块 解决方法: 拷贝 C:\Python26\Lib\site-p ...

  6. 软考之信息安全工程师(包含2016-2018历年真题详解+官方指定教程+VIP视频教程)

    软考-中级信息安全工程师2016-2018历年考试真题以及详细答案,同时含有信息安全工程师官方指定清华版教程.信息安全工程师高清视频教程.持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实 ...

  7. GitHub中webhooks的使用

    目录 GitHub中的webhooks的配置 对配置的webhooks的进行测试 目前在团队在设计一个应用管理的功能,需要了解到常用代码托管的Webhooks的使用.GitHub中的webhooks首 ...

  8. xxl_job springboot改造

    代码地址:https://gitee.com/sharehappy/xxl_job_springboot 官方文档:https://github.com/xuxueli/xxl-job/blob/ma ...

  9. PHP版本的讲解

    原文地址:http://dev.meettea.com/show-90-1.html 最近发现很多PHP程序员对PHP版本知识了解不是很清楚,其中不乏PHP产品主力开发人员. PHP版本主要分三支:P ...

  10. CSP201512-2:消除类游戏

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...