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秒的時間,太長了。你覺得合適的時間是幾秒呢?歡迎在下面留言給我。