//
// ViewController.swift
// 网络
//
// Created by admin on 16/2/25.
// Copyright © 2016年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
let webView = UIWebView(frame: UIScreen.mainScreen().bounds)
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.webView)
self.requestB()
}
// 发送请求,NSURLConnection,同步
func requestC()
{
// 确定url
let url = NSURL(string: "https://m.baidu.com")
// 设置请求
let request = NSURLRequest(URL: url!)
var responce:NSURLResponse?
// 发送请求,NSURLConnection会出警告,所以使用NSURLSession
let responceData:NSData? = try! NSURLConnection.sendSynchronousRequest(request, returningResponse: &responce)
self.webView.loadHTMLString(String(data: responceData!, encoding: NSUTF8StringEncoding)!, baseURL: nil)
}
// 发送请求,NSURLConnection会出警告,所以使用NSURLSession,异步的
func requestA()
{
// 确定url
let url = NSURL(string: "https://m.baidu.com")
// 设置请求
/**
参数:url:资源路径
cachePolicy:缓存策略
NSURLRequestUseProtocolCachePolicy = 0, // 默认缓存策略,会自动缓存
NSURLRequestReload(刷新)Ignoring(忽略)Local(本地)CacheData(缓存数据) = 1, 每次都从服务器去加载数据。忽略本地缓存
**** 底下两个 一般来离线访问。一般配合Reachability(苹果提供的检测网络连接的框架)使用
// 如果用户使用的wifi,就使用这个策略
NSURLRequestReturnCacheDataElseLoad = 2, // 如果有缓存,就用缓存。没有就上网加载
// 如果用户使用的3G,就使用下面的策略
NSURLRequestReturnCacheDataDontLoad = 3, // 如没有缓存,就用缓存。没有返回空,死活不上网
timeoutInterval:超时时间,默认是60秒,一般设置15~20秒。超过这个时间以后,如果服务器还没有相应,就不继续等待了
SDWebImage超时时长设置的是-->15秒
AFN超时时长 60秒
*/
let request = NSURLRequest(URL: url!)
// 发送请求
/**
参数:Request 请求
queue: 队列,这个队列,是完成以后,回调block执行的队列、
Asynchronous:只要是异步,肯定会开新的线程
// 使用场景:如果下载的是压缩包,解压缩也是耗时操作。也需要放在子线程
// 如果回调block里面只需要更新UI,那么就可以只开始指定queue为主队列
Handler:网络访问完成以后执行的代码块
response: 服务器的响应(包含响应行/响应头...下载的时候才去关心这个)
data: 返回的二进制数据
connectionError:在连接服务器的时候的错误,只要是能正常连接到服务器,就不会有错。
只要有网络候出现的错访问,就会可能有错误
*/
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { [weak self] (response:NSURLResponse?, data:NSData?, error:NSError?) -> Void in
self?.webView.loadHTMLString(String(data: data!, encoding: NSUTF8StringEncoding)!, baseURL: nil)
}
}
// NSURLSession发送请求
func requestB()
{
// 确定url
let url = NSURL(string: "https://m.baidu.com")
// 设置请求
let request = NSURLRequest(URL: url!)
// 发送请求,NSURLConnection会出警告,所以使用NSURLSession
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let task = session.dataTaskWithRequest(request) { [weak self] (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
dispatch_async(dispatch_get_main_queue(), { [weak self] () -> Void in
self!.webView.loadHTMLString(String(data: data!, encoding: NSUTF8StringEncoding)!, baseURL: nil)
})
}
task.resume()
}
}