开发了这些年,做为一个颇有些经验的开发人员来说,我不是很喜欢用别人写的库。除非比较复杂。简单的库还是喜欢自己完成。可以量身打造,随便改动。今天继续贴出来HTTP封装类库,大家相互学习交流下。
HttpClient.swift
HttpResult.swift
下面是VC中的点击代码。调用。
也很简单,对吧!
HttpClient.swift
import UIKit
class HttpClient: NSObject {
static let TIME_OUT:NSTimeInterval = 10
private static func initRequest(urlString :String)->NSURLRequest! {
let url = NSURL(string: urlString)
let request = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringCacheData, timeoutInterval: TIME_OUT)
return request
}
private static func initMutableURLRequest(urlString :String)->NSMutableURLRequest! {
let url = NSURL(string: urlString)
let request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringCacheData, timeoutInterval: TIME_OUT)
return request
}
static func httpAsynRequest(urlString :String, completionHandler: (HttpResult!) -> Void){
let request = initRequest(urlString)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response:NSURLResponse?, data:NSData?, error:NSError?) -> Void in
if error != nil {
completionHandler(HttpResult(error: error!))
}else if response != nil {
let httpResponse = response as! NSHTTPURLResponse
let httpResult = HttpResult(responseCode: httpResponse.statusCode,data: data!)
completionHandler(httpResult)
}
}
}
static func httpAsyncPostStringRequest(urlString :String,postData :String, completionHandler: (HttpResult!) -> Void){
httpAsyncPostRequest(urlString, postData: postData.dataUsingEncoding(NSUTF8StringEncoding)!, completionHandler: completionHandler)
}
static func httpAsyncPostRequest(urlString :String,postData :NSData, completionHandler: (HttpResult!) -> Void){
let request = initMutableURLRequest(urlString)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let config = NSURLSessionConfiguration.defaultSessionConfiguration()//默认配置
config.timeoutIntervalForRequest = TIME_OUT //连接超时时间
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if error != nil {
completionHandler(HttpResult(error: error!))
}else if response != nil {
let httpResponse = response as! NSHTTPURLResponse
let httpResult = HttpResult(responseCode: httpResponse.statusCode,data: data!)
completionHandler(httpResult)
}
}
task.resume()
}
static func httpPostBinRequest(urlString :String,postData :NSData, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void){
let request = initMutableURLRequest(urlString)
request.HTTPMethod = "POST"
request.HTTPBody = postData
let config = NSURLSessionConfiguration.defaultSessionConfiguration()//默认配置
config.timeoutIntervalForRequest = TIME_OUT //连接超时时间
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(request,completionHandler: completionHandler)
task.resume()
}
}
HttpResult.swift
import Foundation
class HttpResult: NSObject {
private var responseCode:Int!
private var responseString:String!
private var data:NSData!
private var error:NSError!
init(error:NSError) {
self.responseCode = 0
self.responseString = nil
self.data = nil
self.error = error
}
init(responseCode:Int,data:NSData) {
self.responseCode = responseCode
self.data = data
}
func getResponseCode()->Int {
return self.responseCode
}
func getResponseString()-> String {
if self.responseString == nil {
self.responseString = NSString(data:data!, encoding: NSUTF8StringEncoding) as String!
}
return self.responseString
}
func getData()->NSData {
return self.data
}
func isSuccess()-> Bool {
return self.responseCode == 200
}
}
下面是VC中的点击代码。调用。
@IBAction func loginClicked(sender: UIButton) {
HttpClient.httpAsynRequest("http://www.it72.com/json.php") { (result) -> Void in
if result.isSuccess() {
JsonParser.parse(result.getData())
self.presentViewController(self.sideMenuConvtroller, animated: true, completion: nil)
}else{
print("登录失败")
}
}
}也很简单,对吧!
收藏的用户(0) X
正在加载信息~
推荐阅读
安装Ruby 安装CocoaPods图文教程(高清无码多图)
最新回复 (0)
站点信息
- 文章2313
- 用户1336
- 访客11756683
每日一句
Life is short; Live it!
人生苦短,活出精彩。
人生苦短,活出精彩。
信鸽推送报错NSObject checkTargetOtherLinkFlagForObjc
简单利用Clover四叶草安装U盘安装黑苹果
学习使用Java注解
OllyDbg中如何找出B模块中所有调用了A模块的C方法的地方
解决SSH客户端中文乱码
10年后,Android应用程序仍然比iOS应用程序差
C++11特性里面的thread
XPosed微信自动生成二维码
解决android studio "found an invalid color"的问题
T9社区注册方法【勼适様鲃女尔懟死】
Thinkpad x1 Extreme黑苹果10.14.5安装完成
基于大白主题增加图片本地化的功能
Linux系统查看CPU使用率的几个命令
新会员