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. 北京Uber优步司机奖励政策(4月12日)

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

  2. 1. oracle12C的安装

    官方安装文档:https://docs.oracle.com/database/121/LTDQI/toc.htm#BHCCADGD 1.软件准备 oracle12c.zip 安装包 VMware 虚 ...

  3. EF中一对多的自反关系设置

            对于一般的目录树,通常就是一对多的自反关系,一般会有一个PID,引用于这个ID,实体类代码类似于下: public partial class Catalog { public Cat ...

  4. OpenCL入门:(三:GPU内存结构和性能优化)

    如果我们需要优化kernel程序,我们必须知道一些GPU的底层知识,本文简单介绍一下GPU内存相关和线程调度知识,并且用一个小示例演示如何简单根据内存结构优化. 一.GPU总线寻址和合并内存访问 假设 ...

  5. html表单总结

    总结了下html表单: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  6. 接口自动化·分享·第二篇·你必须了解的HttpRequest和HttpResponse

    完成一个接口调用其实就是完成了一次http请求,所以你必须要清楚一个http请求的组成. 一次完整的请求包含:请求+响应. 一.HttpRequest请求对象 要调用一个接口,首先要准备的是一个请求对 ...

  7. Python教程 深入条件控制

    while 和 if 条件句中可以使用任意操作,而不仅仅是比较操作. 比较操作符 in 和 not in 校验一个值是否在(或不在)一个序列里.操作符 is 和 is not 比较两个对象是不是同一个 ...

  8. 《图解 HTTP 》阅读 —— 第三章

    第3章 HTTP 报文内的 HTTP 信息 用于 HTTP 协议交互的信息称为 HTTP 报文:请求报文和响应报文 HTTP 在传输数据时通过编码可以提升速率,能有效的处理大量数据,但是会消耗更多的C ...

  9. Bellman-ford 模板

    #include<bits/stdc++.h> const int inf=0x3f3f3f3f; ; struct edge{ int u,v;//两个点 int w; //权值 Edg ...

  10. OpenLDAP备份和恢复

    OpenLDAP中数据备份一般分为二种: 1)通过slapcat 指令进行备份 2)通过phpLDAPadmin控制台进行备份 备份方式1: 1)slapcat -v -l openldap-back ...