iOS的网路请求
来源:互联网 发布:windows tracert 多个 编辑:程序博客网 时间:2024/05/17 20:30
//首先创建一个UIViewController,然后在.m文件中写入
//签订协议
@interface MainViewController ()<NSURLConnectionDataDelegate>
//可变的数据属性,用来拼接每一小块数据
@property (nonatomic,retain)NSMutableData *data;
@property (nonatomic,retain)UIImageView *imageView;
@end
@implementation MainViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
self.imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(30,64,280, 200)];
self.imageView.backgroundColor = [UIColorredColor];
[self.viewaddSubview:self.imageView];
[_imageView release];
UIButton *buttonGET = [UIButtonbuttonWithType:UIButtonTypeSystem];
buttonGET.frame =CGRectMake(50,300,100, 40);
buttonGET.backgroundColor = [UIColorcyanColor];
[buttonGET setTitle:@"GET请求"forState:UIControlStateNormal];
[buttonGET addTarget:selfaction:@selector(getAction:)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:buttonGET];
UIButton *buttonPOST = [UIButtonbuttonWithType:UIButtonTypeSystem];
buttonPOST.frame =CGRectMake(200,300,100, 40);
buttonPOST.backgroundColor = [UIColorcyanColor];
[buttonPOST setTitle:@"POST请求"forState:UIControlStateNormal];
[buttonPOST addTarget:selfaction:@selector(postAction:)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:buttonPOST];
UIButton *buttonSync = [UIButtonbuttonWithType:UIButtonTypeSystem];
buttonSync.frame =CGRectMake(50,400,100, 40);
buttonSync.backgroundColor = [UIColorcyanColor];
[buttonSync setTitle:@"异步连接(代理)"forState:UIControlStateNormal];
[buttonSync addTarget:selfaction:@selector(syncAction:)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:buttonSync];
UIButton *buttonAsync = [UIButtonbuttonWithType:UIButtonTypeSystem];
buttonAsync.frame =CGRectMake(200,400,100, 40);
buttonAsync.backgroundColor = [UIColorcyanColor];
[buttonAsync setTitle:@"异步连接(blick)"forState:UIControlStateNormal];
[buttonAsync addTarget:selfaction:@selector(asynAction:)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:buttonAsync];
}
- (void)getAction:(UIButton *)button
{
//get请求
//1.创建请求
//地址字符串
NSString *str =@"添加网址";
//对地址进行编码处理,对一些特殊字符转为utf-8编码格式
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//通过字符串产生一个url
NSURL *url = [NSURLURLWithString:str];
//参数1:URL
//参数2:请求数据的缓存策略
//参数3:超时时间
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
//设置请求方式(GET)
request.HTTPMethod =@"GET";
//2.建立连接,连接服务器
//同步连接服务器
//这个同步的方法可以直接获取到完整的网络数据
NSURLResponse *response =nil;
NSError *error =nil;
//参数1:要发送给服务器的请求
//参数2:从服务器获得的响应信息
//参数3:错误信息
NSData *data = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:&response error:&error];
NSLog(@"服务器响应信息: %@", response);
NSLog(@"错误信息: %@", error);
//3.获取数据,处理
UIImage *image = [UIImageimageWithData:data];
self.imageView.image = image;
}
- (void)postAction:(UIButton *)button
{
//post请求
//1.创建请求
NSString *str =@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURLURLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
//设置请求方式
request.HTTPMethod =@"POST";
//设置post请求body
NSString *bodyStr =@"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
//将一个字符串对象,转换为一个NSData对象
NSData *bodyData = [bodyStrdataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = bodyData;
//2.建立连接,连接服务器
NSURLResponse *response =nil;
NSError *error =nil;
NSData *resultData = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:&response error:&error];
NSLog(@"%@", response);
//3.处理数据
NSError *errorJSON =nil;
id result = [NSJSONSerializationJSONObjectWithData:resultDataoptions:NSJSONReadingMutableContainerserror:&errorJSON];
NSLog(@"%@", result);
NSString *resultstr = [[NSStringalloc]initWithData:resultDataencoding:NSUTF8StringEncoding];
NSLog(@"%@", resultstr);
}
- (void)syncAction:(UIButton *)button
{
//异步连接服务器(协议方式连接)
//1.创建请求
NSString *str =@"http://api.douban.com/v2/movie/nowplaying?app_name=doubanmovie&client=e:iPhone4,1|y:iPhoneOS_6.1|s:mobile|f:doubanmovie_2|v:3.3.1|m:PP_market|udid:aa1b815b8a4d1e961347304e74b9f9593d95e1c5&alt=json&version=2&start=0&city=北京&apikey=0df993c66c0c636e29ecbb5344252a4a";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURLURLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
request.HTTPMethod =@"GET";
//2.连接服务器
[NSURLConnectionconnectionWithRequest:requestdelegate:self];
}
//收到服务器的响应信息
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//每次收到服务器响应信息的时候,对数据进行初始化,准备拼接
self.data = [NSMutableDatadata];
NSLog(@"%@", response);
}
//接收到服务器数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//拼接数据
[self.dataappendData:data];
NSLog(@"获取数据");
}
//完成加载
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//使用数据
id resulet = [NSJSONSerializationJSONObjectWithData:self.dataoptions:NSJSONReadingMutableContainerserror:nil];
NSLog(@"完成加载");
}
- (void)asynAction:(UIButton *)button
{
//异步连接(block)
//1.创建请求
NSString *str =@"http://api.douban.com/v2/movie/nowplaying?app_name=doubanmovie&client=e:iPhone4,1|y:iPhoneOS_6.1|s:mobile|f:doubanmovie_2|v:3.3.1|m:PP_market|udid:aa1b815b8a4d1e961347304e74b9f9593d95e1c5&alt=json&version=2&start=0&city=北京&apikey=0df993c66c0c636e29ecbb5344252a4a";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURLURLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
request.HTTPMethod =@"GET";
//2.连接服务器
//参数1:请求
//参数2:操作队列,网络请求完毕,返回到哪个线程中
//参数3:处理数据的block
[NSURLConnectionsendAsynchronousRequest:requestqueue:[NSOperationQueuemainQueue] completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError) {
//3.处理数据
NSError *resultError =nil;
id result = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:&resultError];
NSLog(@"%@", result);
}];
}
- iOS的网路请求
- HttpClient和HttpUrlConnection的请求网路
- iOS 即时得到当前的网路状态
- iOS 即时得到当前的网路状态
- Http网路请求原理
- Fragment 请求网路
- AFNetwork网路请求 队列代码
- AsyncTask___网路请求使用AsyncTask
- ios开发 调试网路限速
- iOS网路传输zip压缩
- 网路的力量
- JAVA的网路编程
- JAVA的网路编程
- 网路的基本概念
- UI之网路请求(进度条小知识)
- 用HttpGet和HttpClient网路请求数据
- MainActivity——接上文网路请求
- IOS的网络请求
- C语言(三)预处理指令
- 插入排序
- ZOJ 3366 - Light Bulb(三分)
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- 工程人员注意事项
- iOS的网路请求
- 关于code first 创建并更改已经创建好的数据库的方法【本人真实操作】
- 基于Mahout的图书推荐系统
- tableView 分组间距
- 开发基本守则
- 基于Docker的PHP开发环境
- C++ 类的 复制构造函数 和 赋值构造函数
- WPF无边框窗体-可移动可调整大小
- Android Studio中如何跳到某一个方法