iOS 通过网络请求获取图片的下载歌曲
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 通过网络请求获取图片的下载歌曲的更多相关文章
- ios 从网络上获取图片并在UIImageView中显示
ios 从网络上获取图片 -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIIm ...
- ios 从网络上获取图片
-(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...
- AFNetworking网络请求与图片上传工具(POST)
AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...
- ios中摄像头/相册获取图片压缩图片上传服务器方法总结
本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下. 这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...
- Android 多线程:使用Thread和Handler (从网络上获取图片)
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...
- css3如何让div一直循环自转圈,附带:网络请求通知图片一直在转圈实例
css3如何让div一直循环自转圈 代码如下: div{ -webkit-transition-property: -webkit-transform; -webkit-transition-dura ...
- iOS开发网络请求——大文件的多线程断点下载
iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大 ...
随机推荐
- 成都Uber优步司机奖励政策(4月16日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Ajax文件上传三式
文件上传(三式) 1.urls.py文件 url(r'^upload.html$', views.upload), 2.views.py文件 import os def upload(request) ...
- 「Leetcode」975. Odd Even Jump(Java)
分析 注意到跳跃的方向是一致的,所以我们需要维护一个数接下来跳到哪里去的问题.换句话说,就是对于一个数\(A_i\),比它大的最小值\(A_j\)是谁?或者反过来. 这里有两种方案,一种是单调栈,简单 ...
- Selenium2+python自动化-操作浏览器基本方法
前言 从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的A ...
- 使用 Mesos 管理虚拟机
摘要 为了满足渲染.基因测序等计算密集型服务的需求,UCloud 推出了“计算工厂”产品,让用户可以快速创建大量的计算资源(虚拟机).该产品的背后,是一套基于 Mesos 的计算资源管理系统.本文简要 ...
- asp之GetArray提取链接地址,以$Array$分隔的代码
'================================================== '函数名:GetArray '作 用:提取链接地址,以$Array$分隔 '参 数:ConStr ...
- Linux 发展史与vm安装linux centos 6.9
操作系统 是一个人与计算机硬件的中介. Linux操作系统 开源代码的.自由传播的类Unix操作系系统软件: 多用户.多任务.多线程.多CPU的操作系统. 服务器端.嵌入式开发.个人pc桌面,服务器领 ...
- 第八次ScrumMeeting博客
第八次ScrumMeeting博客 本次会议于11月2日(四)22时整在3公寓725房间召开,持续20分钟. 与会人员:刘畅.辛德泰.窦鑫泽.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的 ...
- Python 招聘信息爬取及可视化
自学python的大四狗发现校招招python的屈指可数,全是C++.Java.PHP,但看了下社招岗位还是有的.于是为了更加确定有多少可能找到工作,就用python写了个爬虫爬取招聘信息,数据处理, ...
- ES6的新特性(19)——Module 的语法
Module 的语法 概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来.其他语言都有这项功能,比如 Ruby 的re ...