Swift3.0 UrlSession

GET請(qǐng)求

class func zyGETWithURLSession(_ urlString:String,parmas:NSDictionary,mathFunction:@escaping (_ responObject:AnyObject)->Void){

    let session = URLSession.shared;
    let str = self.parmasStringWithParmas(parmas);
    let url = URL(string: String(format: "%@?%@", urlString,str));

    let task = session.dataTask(with: url!, completionHandler: { (data, respons, eror) -> Void in
        if data != nil{
            let responsobject = try?JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments);

            mathFunction(responsobject! as AnyObject);
        }else{
            mathFunction("file" as AnyObject);
        }
        
        
    }) 
    task.resume();
    
}

POST請(qǐng)求

class func zyPOSTwithURLSession(_ urlString:String,parmas:NSDictionary,mathFunction:@escaping (_ responObject:AnyObject)->Void){
    
    let session = URLSession.shared;
    
    let str = self.parmasStringWithParmas(parmas);
    let url = URL(string: urlString);
    
    var request = URLRequest(url: url!);
    
    request.httpMethod = "POST";

    request.httpBody = str.data(using: String.Encoding.utf8.rawValue);
    
    let task = session.dataTask(with:request, completionHandler: { (data, respons, error) -> Void in
        
        if data != nil{
            let responsobject = try?JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments);
            
            mathFunction(responsobject! as AnyObject);
        }else{
            mathFunction("file" as AnyObject);
        }
    }) 
    
    task.resume();
}

拼接GET參數(shù)

  class func parmasStringWithParmas(_ parmas:NSDictionary)->NSString{

    let parString = NSMutableString();
    let arr = parmas.allKeys as NSArray;
    for i in 0 ..< arr.count{
        let key = arr[i] as! String;
        let value = parmas.object(forKey: arr[i]) as! NSString;
        parString.appendFormat("%@=%@", key,value);
        
        let lastKey = arr.lastObject as! String;
        if (key != lastKey) {
            
            parString.appendFormat("&");
        }

        
    }
    return parString;
}

設(shè)置請(qǐng)求頭

request.setValue(fileType, forHTTPHeaderField: "Content-Type");

上傳方法

class func uploadFile(_ urlString:String,_ fileType:String,_ filePath:String,_ mathFunction: @escaping zymathFuncation){
    let session = URLSession.shared;
    let url = URL.init(string: urlString);
    
    var request = URLRequest(url: url!);
    request.httpMethod = "POST";
    request.setValue(fileType, forHTTPHeaderField: "Content-Type");
    
    let filedata:Data = try!Data.init(contentsOf: URL.init(fileURLWithPath: filePath));

    let task = session.uploadTask(with: request, from: filedata) { (data, response, error) in
        

    }
    task.resume();
}

刪除方法

class func deletFile(urlString:String,_ mathFunction: @escaping zymathFuncation){
    let session = URLSession.shared;
    let url = URL(string: urlString);
    var request = URLRequest(url: url!);
    request.httpMethod = "DELETE";
    let task = session.dataTask(with:request, completionHandler: { (data, respons, error) -> Void in
        

    })
    
    task.resume();
}

更新方法

class func zyUpwithURLSession(_ urlString:String,parmas:Dictionary<String,Any>,mathFunction:@escaping (_ responObject:AnyObject,_ isSuccess:Bool,_ zyError:Error?)->Void){

    let session = URLSession.shared;
    let url = URL(string: urlString);
    var request = URLRequest(url: url!);
    request.httpMethod = "PUT";
    let jsonData = try?JSONSerialization.data(withJSONObject: parmas, options: JSONSerialization.WritingOptions.prettyPrinted);
    request.httpBody = jsonData! as Data;
   
    let task = session.dataTask(with:request, completionHandler: { (data, respons, error) -> Void in
        

    })

    task.resume();
}

DownLoad任務(wù)

//
//  ZYSessionDownload.swift
//  NSURLSession
//
//  Created by mac on 16/9/10.
//  Copyright ? 2016年 ZY. All rights reserved.
//

import UIKit

class ZYSessionDownload: NSObject ,URLSessionDownloadDelegate{

var zySession:Foundation.URLSession?;
class func shareInstance()->ZYSessionDownload{
    let sessiondown = ZYSessionDownload();
    return sessiondown;
}

/**
 download
 */

 func zyDownLoadWithURLSession(_ urlString:String,parmas:NSDictionary,mathFunction:(_ responObject:AnyObject)->Void){

    let configer = URLSessionConfiguration.default;
    let session = Foundation.URLSession(configuration: configer, delegate: self, delegateQueue: OperationQueue.main);
    
    zySession = session;
    
    let str = self.parmasStringWithParmas(parmas);
    let url = URL(string: urlString);
    
    if (parmas.allKeys.count > 0){
        
        var request = URLRequest(url: url!);
        
        request.httpMethod = "POST";
        
        request.httpBody = str.data(using: String.Encoding.utf8.rawValue);
        let task = session.downloadTask(with: request, completionHandler: { (url, respons, error) -> Void in
            
            
        })
        
        task.resume();
    }else{
        let task = session.downloadTask(with: url!, completionHandler: { (locationUrl, respons, error) -> Void in
            let path = "Users/mac/Desktop/ss.pdf";
            try!FileManager.default.moveItem(at: locationUrl!, to: URL(fileURLWithPath: path));
        }) 
        
        task.resume();
    }
    
}


//下載完成時(shí)調(diào)用
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL){
    
}

//下載時(shí)調(diào)用
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64){
    
}
//任務(wù)完成時(shí)調(diào)用
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64){
    
}
//拼接GET參數(shù)
func parmasStringWithParmas(_ parmas:NSDictionary)->NSString{
    
    let parString = NSMutableString();
    let arr = parmas.allKeys as NSArray;
    for i in 0 ..< arr.count{
        let key = arr[i] as! String;
        let value = parmas.object(forKey: arr[i]) as! NSString;
        parString.appendFormat("%@=%@", key,value);
        
        let lastKey = arr.lastObject as! String;
        if (key != lastKey) {
            
            parString.appendFormat("&");
        }
        
        
    }
    return parString;
}


}

注意锌蓄,3.0以后首量,session不能使用NSRequest和NSMutableRequest的對(duì)象烂翰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娄蔼,一起剝皮案震驚了整個(gè)濱河市色徘,隨后出現(xiàn)的幾起案子业岁,更是在濱河造成了極大的恐慌,老刑警劉巖君躺,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峭判,死亡現(xiàn)場離奇詭異,居然都是意外死亡棕叫,警方通過查閱死者的電腦和手機(jī)林螃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俺泣,“玉大人疗认,你說我怎么就攤上這事》疲” “怎么了横漏?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贝润。 經(jīng)常有香客問我绊茧,道長,這世上最難降的妖魔是什么打掘? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任华畏,我火速辦了婚禮鹏秋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亡笑。我一直安慰自己侣夷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布仑乌。 她就那樣靜靜地躺著百拓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晰甚。 梳的紋絲不亂的頭發(fā)上贱迟,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天习柠,我揣著相機(jī)與錄音,去河邊找鬼。 笑死恬惯,一個(gè)胖子當(dāng)著我的面吹牛排宰,可吹牛的內(nèi)容都是我干的官辽。 我是一名探鬼主播汛聚,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅买!你這毒婦竟也來了并闲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤谷羞,失蹤者是張志新(化名)和其女友劉穎帝火,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洒宝,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡购公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年萌京,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雁歌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡知残,死狀恐怖靠瞎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情求妹,我是刑警寧澤乏盐,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站制恍,受9級(jí)特大地震影響父能,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜净神,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一何吝、第九天 我趴在偏房一處隱蔽的房頂上張望溉委。 院中可真熱鬧,春花似錦爱榕、人聲如沸瓣喊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藻三。三九已至,卻和暖如春跪者,著一層夾襖步出監(jiān)牢的瞬間棵帽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來泰國打工渣玲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岖寞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓柜蜈,卻偏偏與公主長得像仗谆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淑履,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理隶垮,服務(wù)發(fā)現(xiàn),斷路器秘噪,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 因?yàn)閕OS的權(quán)限限制狸吞, 如果使用HTTP協(xié)議要配置info.plist, 將Allow Arbitary Load...
    brycegao閱讀 1,885評(píng)論 0 4
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,366評(píng)論 0 6
  • 1.原型鏈指煎。2.構(gòu)造函數(shù)蹋偏。3.組合繼承。4.寄生組合繼承至壤。5.原型式威始。6.寄生式。 1像街、簡單原型鏈: 核心:拿父類...
    overflow_hidden閱讀 683評(píng)論 0 0
  • (445) 杰弟想要去迦南音樂學(xué)校上個(gè)暑期班黎棠,但是我查了一下價(jià)格,三個(gè)月八千呢镰绎,太貴啦脓斩,所以他要是知道了就未必會(huì)去...
    韓尚小閱讀 255評(píng)論 1 1