美文网首页
iOSSwift:04.HttpSender

iOSSwift:04.HttpSender

作者: 笑着字太黑 | 来源:发表于2022-12-19 10:26 被阅读0次

import Foundation

class HttpSender {

private static let log = Logger(className: "HttpSender")

static func doHttp(_ request:URLRequest) -> NSDictionary?{
    
    log.logDebug(strList: "doHttp(URLRequest:%@) Start",request.description)
    
    let urlconfig = URLSessionConfiguration.default
    urlconfig.timeoutIntervalForRequest = 20
    urlconfig.timeoutIntervalForResource = 20
    let session = URLSession(configuration: urlconfig, delegate: nil, delegateQueue: OperationQueue.init())
    
    var resultDic: NSDictionary!
    let sema = DispatchSemaphore(value:0)
    let dataTask = session.dataTask(with: request, completionHandler: {
        (data, response, error) -> Void in
      
        log.logDebug(strList: "doHttp dataTask running")
        var result: [String: Any] = [:]
        if let response = response {
            log.logDebug(strList: "doHttp response:%@",response.description)
        }
      
        if let error = error {
            result.updateValue("error", forKey: "status")
            result.updateValue(error.localizedDescription, forKey: "message")

            log.logError(strList: "doHppt Error:%@",error.localizedDescription)
            return
        }

        guard let data = data else { return }
        if let jsonObject = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) {

            resultDic = (jsonObject as? NSDictionary)!
            log.logDebug(strList: "doHttp resultDic:%@",resultDic.description)
        }
        sema.signal()
    }) as URLSessionTask
    
    dataTask.resume()
    _ = sema.wait(timeout: DispatchTime.distantFuture)
    
    log.logDebug(strList: "doHttp() End")
    return resultDic
  }

}

相关文章

网友评论

      本文标题:iOSSwift:04.HttpSender

      本文链接:https://www.haomeiwen.com/subject/kydqcrtx.html