OC 30 day
获取网路数据的两种方式:
//第一种方式 获取网路数据
NSURL *url = [NSURL URLWithString:@"https://run.mocky.io/v3/39057ccc-3332-4a2f-a88f-7bd259f078b0"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
//第二种方式 获取网路数据
NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}];
有两种方式,有哪一种好呢?
因为第一种方式,很多事情不能做,哪些事情呢?
第一种方式,没办法设置header,也有很多种请求资讯无法操作。
NSMutableURLRequest *request = [NSURLRequest requestWithURL:url];
//设置请求头
[request setValue:你要设置的value forHTTPHeaderField: 你要设置的键];
配置参数时,可以看到三个参数设定,如下
NSMutableURLRequest *request = [NSMutableURLRequest
requestWithURL:<#(nonnull NSURL *)#>
cachePolicy:<#(NSURLRequestCachePolicy)#>
timeoutInterval:<#(NSTimeInterval)#>];
我们来看看NSURLRequestCachePolicy是如何被定义的
NSURLRequestCachePolicy因为有好几种,所以他是一个枚举。
typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
NSURLRequestUseProtocolCachePolicy = 0,
NSURLRequestReloadIgnoringLocalCacheData = 1,
NSURLRequestReturnCacheDataElseLoad = 2,
NSURLRequestReturnCacheDataDontLoad = 3,
};
NSURLRequestUseProtocolCachePolicy
NSURLRequestReloadIgnoringLocalCacheData
NSURLRequestReturnCacheDataElseLoad
NSURLRequestReturnCacheDataDontLoad
永远不打API,主要用在离线运用。
默认情况下,我们选择0的缓存策略。
以下是范例的程序码。
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:0
timeoutInterval:15];
我们来查看下面这个网路请求的定义。
NSMutableURLRequest *request = [NSURLRequest requestWithURL:url];
可以看到下面这段网路请求的注解
/*!
@method requestWithURL:
@abstract Allocates and initializes an NSURLRequest with the given
URL.
@discussion Default values are used for cache policy
(NSURLRequestUseProtocolCachePolicy) and timeout interval (60
seconds).
@param URL The URL for the request.
@result A newly-created and autoreleased NSURLRequest instance.
*/
在这段注解里,你会发现几个问题:
不合适,让使用者等待60秒的时间,太长了。你觉得合适的时间是几秒呢?欢迎在下面留言给我。
<<: [C#] LeetCode 5. Longest Palindromic Substring
>>: iOS APP 开发 OC 第十五天,网路请求(错误处理)
介绍完什麽是 template 与 structuarl directive 後,接着回来介绍 co...
还记得前两天我们在介绍阵列的时候,有说到需要给他固定的长度,若超过就需要宣告一个新的更大的阵列吗?那...
使用自定义的listview 第四部:创建listview的adapter package com....
从Swift 到 OC 第一天, @interface设计思维 tags: OC 30 day 第一...
自动更新每日个股日成交资讯 结合前几篇所学,我们来做一个可以自动更新日成交资讯的程序吧! Reque...