Just网络传输器和JSONExport的使用
2016-05-17 22:40
483 查看
首先使用cocoapod来配置Just 首先创建一个空的文件Podfile
在Podflie中添加一句话
用open with External Editor用终端来打开 转换到根目录下 用cd..再ls退到根目录,随后再输入命令来安装Just
jsonExport明天再介绍
使用jsonExport 可以直接使用其固定的类
把从网络上获取到的json字符串拿过来 随后可以生成你想要得类 例如swift的class或者swift类型的结构体等,这个就要看个人的需求了,随后勾掉帮助方法,随后即可生成所需的文件,将生成的文件拷贝进项目中的model小组即可
随后编netWorker类,可以用来统一网络请求
大致的网络请求的步骤是这样的
随后通过枚举,来加载不同的请求的网址和参数
随后进行网络请求 在这个例子汇总item是在网络请求后的一个数组,所以用它来进行保存 在后来的判断过程中,要判断是否是个json的字符串,或者retcode是否为0 为0才成功等,恐怕自己太渣,用了最傻的if else语句来进行判断 大神是用guard的语句,因此,稍后奉上 用闭包进行最后的完成 swift的guard语句,主要是为了请求当if不成立的时候来判断比较好的博客有http://www.jianshu.com/p/3a8e45af7fdd
用guard语句 发现一只不能拿到错误的提示 有可能是return 的关系
viewController中只要一段就够了
这样就能进行有序的网络请求了,比Alamofire更方便
Just的参考文档
http://docs.justhttp.net/QuickStart.html
JSONExport的参考
https://github.com/yagamis/JSONExport
在Podflie中添加一句话
use_frameworks! pod 'Just'
用open with External Editor用终端来打开 转换到根目录下 用cd..再ls退到根目录,随后再输入命令来安装Just
jsonExport明天再介绍
使用jsonExport 可以直接使用其固定的类
把从网络上获取到的json字符串拿过来 随后可以生成你想要得类 例如swift的class或者swift类型的结构体等,这个就要看个人的需求了,随后勾掉帮助方法,随后即可生成所需的文件,将生成的文件拷贝进项目中的model小组即可
随后编netWorker类,可以用来统一网络请求
大致的网络请求的步骤是这样的
随后通过枚举,来加载不同的请求的网址和参数
enum NetWorkHelper{ case courseID(authtoken:String,url:String)随后定义通用的请求网址和通用的请求参数
随后进行网络请求 在这个例子汇总item是在网络请求后的一个数组,所以用它来进行保存 在后来的判断过程中,要判断是否是个json的字符串,或者retcode是否为0 为0才成功等,恐怕自己太渣,用了最傻的if else语句来进行判断 大神是用guard的语句,因此,稍后奉上 用闭包进行最后的完成 swift的guard语句,主要是为了请求当if不成立的时候来判断比较好的博客有http://www.jianshu.com/p/3a8e45af7fdd
import Just
enum NetWorkHelper{ case courseID(authtoken:String,url:String)
//参数
static var params = [String:AnyObject]()
//完成的闭包 返回items
func getItems(completion:([Item]?,String?) -> Void){
var error:String?
//保存result的
var result:[Item]?
switch self {
case .courseID(authtoken: let auth,let url):
//配置参数
NetWorkHelper.params["authtoken"] = auth
print(NetWorkHelper.params)
print(url)
Just.get(url, params: NetWorkHelper.params,asyncCompletionHandler: { (r) in
if r.ok{
print(222)
//保证json是个字符串
if let jsonDic = r.json as? NSDictionary{
let retcode = jsonDic["retcode"] as! NSNumber
if(retcode != 0){
error = "授权错误"
}else{
let rootC = RootClass(fromDictionary: jsonDic)
result = rootC.items
}
}else{
error = "不是json字符串"
}
}else{
error = "服务器错误"
}
//确保字典中的retcode为0
completion(result,error)
})
}
}
}
用guard语句 发现一只不能拿到错误的提示 有可能是return 的关系
import Just enum NetworkHelper { case WeeklyWeather(cityid: String) //http://api.k780.com:88/?app=weather.future&weaid=1&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json private static var params = [ "app":"weather.future", // "appkey":"12215", "sign":"24c28ec9c8629ce27cfbec8af12cf353", "format":"json" ] private static let baseUrl = "http://api.k780.com:88" func getWeather(completion: ([Result]?, String?) -> Void) { var error: String? var results: [Result]? switch self { case .WeeklyWeather(cityid: let weaid): NetworkHelper.params["weaid"] = weaid Just.get(NetworkHelper.baseUrl, params: NetworkHelper.params,asyncCompletionHandler: { (r) in if r.ok { //确保返回结果是一个json,并可转换为一个字典 guard let jsonDict = r.json as? NSDictionary else { error = "不是一个json字符串" return } //确保字典中的success字段的值是1 guard let success = jsonDict["success"] where success as? String == "1" else { error = "返回数据格式不对,或者授权错误" return } let weather = Weather(fromDictionary: jsonDict) results = weather.result } else { error = "服务器出错" } completion(results, error) }) } } }这样可以很好的将网络请求与viewController分离开来
viewController中只要一段就够了
import UIKit class ViewController: UIViewController { var results1 = [Item]() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let course = NetWorkHelper.courseID(authtoken: "876E65B5AFB21A0708EC6B04F28ED73D08D1ECC41182DBC0",url:"http://dodo.hznu.edu.cn/api/coursequery") // print(course) course.getItems {(results,error) in if let results2 = results{ self.results1 = results2 dispatch_async(dispatch_get_main_queue(), { print(self.results1[0].id) }) //print(self.results1) }else{ print(error) } } }
这样就能进行有序的网络请求了,比Alamofire更方便
Just的参考文档
http://docs.justhttp.net/QuickStart.html
JSONExport的参考
https://github.com/yagamis/JSONExport
相关文章推荐
- 利用卷积神经网络(CNN)提取图像特征
- Android 6.0 新特性 整理 资料来自网络
- iOS之网络请求的简单封装
- [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse
- u-boot下网络驱动程序的修改
- TCP核心概念-慢启动,ssthresh,拥塞避免,公平性的真实含义
- faster rcnn修改demo.py保存网络中间结果
- 可靠的传输层协议——TCP协议
- 深度学习——缩减+召回加速网络训练
- Socket TCP
- [原创]java WEB学习笔记08:HttpServletRequest & ServletRequest
- Python网络编程中的select 和 poll I/O复用的简单使用
- http post 请求数据格式选择
- AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto
- 网络流二十四题之十一 —— 航空路线问题(AIRL)
- 运输层的TCP协议
- BZOJ1001 狼抓兔子(裸网络流)
- Tcpdump抓取 Android 网络包
- TCP的连接建立与连接释放
- 网络 协议与分层结构 的学习心得