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
}
}
网友评论