iOS 网络编程基础
2015-09-22 09:46
471 查看
get 请求,将参数直接写在访问路径上.操作简单,不过容易被外界看到,安全性不高,地址最多255字节
get
// 1.构造 url
post 请求,将参数直接写在 body(请求体)里面, post 请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在请求体里面,不易被捕获.
NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/movie/detail.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];
// 获取响应头
NSHTTPURLResponse respon = (NSHTTPURLResponse )response;
NSDictionary *dic = respon.allHeaderFields;
NSLog(@”dic:%@”,dic);
NSURLSessionConfiguration
NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
// 设置缓存策略
config.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
config.timeoutIntervalForRequest = 30;
}
// 代理方法 当服务器开始响应的时候
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{
completionHandler(NSURLSessionResponseAllow);
}
// 数据包从服务器开始流向客户端调用的方法 可以监听下载进度
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveData:(NSData *)data
{
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
_textView.text = str;
}
// 加载完成或失败调用的方法
- (void)URLSession:(NSURLSession )session task:(NSURLSessionTask )task
didCompleteWithError:(NSError *)error
{
NSLog(@”加载失败”);
}
(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
get
// 1.构造 url
NSString *urlStr = @"https://api.douban.com/v2/movie/us_box"; NSURL *url = [NSURL URLWithString:urlStr]; // 2. 构造 request NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"GET"]; [request setTimeoutInterval:30]; //设置请求头 三种方式 //request setAllHTTPHeaderFields:<#(NSDictionary *)#> //request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#> //request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#> // 设置请求体 //request setHTTPBody:<#(NSData *)#> // 3. 构造 session NSURLSession *session = [NSURLSession sharedSession]; // 进入 bolck 代码块会自动开启子线程 NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error == nil) { NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // UI 操作 需要回到主线程操作 [_textView performSelectorOnMainThread:@selector(setText:) withObject:str waitUntilDone:YES]; } }]; // 开始 session任务 [task resume]
post 请求,将参数直接写在 body(请求体)里面, post 请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在请求体里面,不易被捕获.
NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/movie/detail.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url]; // 设置请求方式 请求时间 [request setHTTPMethod:@"POST"]; [request setTimeoutInterval:30]; // 设置请求体 与 GET 请求的不同之处 GET 请求也可以添加请求体 不过是在 URL 后面 NSString *dataStr = @"movie_id=43485"; NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding]; [request setHTTPBody:data]; // 构造 session 对象 NSURLSession *session = [NSURLSession sharedSession]; // 链接服务器 NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error == nil) { NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // 回到主线程 [_textView performSelectorOnMainThread:@selector(setText:) withObject:str waitUntilDone:YES];
// 获取响应头
NSHTTPURLResponse respon = (NSHTTPURLResponse )response;
NSDictionary *dic = respon.allHeaderFields;
NSLog(@”dic:%@”,dic);
} } ]; // 开始任务 [task resume];
NSURLSessionConfiguration
NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
// 设置缓存策略
config.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
config.timeoutIntervalForRequest = 30;
// 创建会话对象 NSOperationQueue *mainQueue = [NSOperationQueue mainQueue]; NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:mainQueue]; NSURLSessionDataTask *task = [session dataTaskWithURL:url]; [task resume];
}
// 代理方法 当服务器开始响应的时候
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{
completionHandler(NSURLSessionResponseAllow);
}
// 数据包从服务器开始流向客户端调用的方法 可以监听下载进度
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveData:(NSData *)data
{
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
_textView.text = str;
}
// 加载完成或失败调用的方法
- (void)URLSession:(NSURLSession )session task:(NSURLSessionTask )task
didCompleteWithError:(NSError *)error
{
NSLog(@”加载失败”);
}
(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
相关文章推荐
- NSURLSession使用说明及后台工作流程分析
- HTTP协议:缓存
- okhttp使用
- 接口测试及httpclient深入
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- Linux网络IO模型
- 关于Linux的进程和线程 http://kenby.iteye.com/blog/1014039
- 网络编程问题解决方案:查看进程占用了哪个端口号
- 打造安全的App!iOS安全系列之 HTTPS 进阶
- 虚拟机桥接网络连接方式
- 2015北京网络赛 G Boxes BFS+打表
- CentOS6 编译安装LAMP(Apache-httpd2.4,Mariadb,php)_2015092001
- 2015北京网络赛 Boxes
- Windows下让Git记住用户名密码(https)
- .NET Framework 中的网络编程
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- hdu5458 2015沈阳赛区网络赛 树链剖分+并查集
- http协议
- 用xutils或imageloader加载网络图片实现轮播效果