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. elasticsearch 安装问题

    Elasticsearch5.0 安装问题集锦 elasticsearch 5.0 安装过程中遇到了一些问题,通过查找资料几乎都解决掉了,这里简单记录一下 ,供以后查阅参考,也希望可以帮助遇到同样问题 ...

  2. 北京Uber优步司机奖励政策(4月12日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. Gulp 有用的地址

    gulp似乎成为web开发的必选工具. 推荐一个非常好的入门教程 https://markgoodyear.com/2014/01/getting-started-with-gulp/ 官方插件列表: ...

  4. Yii 2.0 中事件的使用

    关于PHP的事件处理,参照 http://www.cnblogs.com/mafeifan/p/4322238.html http://www.cnblogs.com/mafeifan/p/43222 ...

  5. c++中的stack实现

    通用.类型安全.模板 简直就是巧夺天工的例子

  6. Excel小技巧整理(持续更新)

    合并某列中相同单元格 参考https://jingyan.baidu.com/article/9158e00006db70a25512286f.html 使用方法 先给需要合并的列排序,这样相同数据会 ...

  7. LUIS 语义识别API调用方法

    本例使用itchat获取微信文字消息,发送给LUIS返回识别消息,再将返回消息格式化后通过微信发回 关于itchat的使用参考我的另外一篇随笔itchat个人练习 语音与文本图灵测试例程 # -*- ...

  8. appium自动化环境搭建

    1.java开发环境JDK 2.android SDK(platform/platform tools/tools/build tools) 3.python下载安装(pip) 4.appium下载安 ...

  9. socket_tcp协议_loadrunner测试

    1.lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:8888", Lrs ...

  10. Update类型_JDBC的方法_JAVA方法_Loadrunner脚本

    java vuser   JDBC 参数化的方法 如果不进行参数化 直接把32  33行去掉 ,sql 值写到valuers  中就行了 下面这是 insert,delete,update  三种方法 ...