swift URL 编码
来源:互联网 发布:海信网络电视价格 编辑:程序博客网 时间:2024/06/05 07:14
使用value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
无法保证URL 编码成功,于是我参考 Alamofire 的URL编码如下:
static func get( _ url: String, parameters: [String: Any] , completionHandler: @escaping (NSError?, JSON) -> Void) { var urlStr = url var flag = true let generalDelimitersToEncode = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4 let subDelimitersToEncode = "!$&'()*+,;=" var allowedCharacterSet = CharacterSet.urlQueryAllowed allowedCharacterSet.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)") for ( key , value) in parameters { var anyValue: Any = value if let value = value as? String{ anyValue = value.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? "" } if flag{ flag = false urlStr += "?" + key + "=\(anyValue)" }else{ urlStr += "&" + key + "=\(anyValue)" } } if let url = URL.init(string: urlStr){ var request = URLRequest(url: url) request.cachePolicy = .reloadIgnoringLocalCacheData URLSession.shared.dataTask(with: request, completionHandler: { (data, response, err) in if let err = err{ completionHandler(err as NSError, JSON.null ) }else{// if let json = try? JSONSerialization.jsonObject(with: data!, options: [.allowFragments, .mutableContainers , .mutableLeaves]) as? [String: Any] { if let data = data { let json = JSON.init(data: data) guard let code = json["code"].int, let msg = json["msg"].string else{ completionHandler(NSError(domain: "", code: 1, userInfo: nil), JSON.null) return } if code != 10000 { completionHandler(NSError(domain: msg, code: code, userInfo: nil), JSON.null ) }else{ completionHandler(nil, json["data"]) } } } }) .resume() } }
阅读全文
0 0
- swift 之 URL编码
- swift URL 编码
- Swift学习笔记 - URL编码encode与解码decode
- url编码
- URL编码
- URL编码
- URL编码
- url 编码
- URL编码
- URL编码
- URL编码
- Url编码
- URL编码
- URL编码
- URL编码
- URL编码
- url编码
- url编码
- 有源钳位吸收器电路在隔离式DC-DC转换器高输出电流应用中的数字实现方式---凯利讯半导体
- 使用Android Stdio时的几个注意事项
- Java Spring MVC入门(四)——使用Maven创建项目
- IDEA Tomcat启动报错Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild:
- 决策树进阶
- swift URL 编码
- C#最简单最完整的webservice实例 VS2008
- PAT 1012. 数字分类
- layui树形结构
- TiDB 架构的演进和开发哲学
- leetcode 501. Find Mode in Binary Search Tree 二叉搜索树BST的中序遍历
- Arduino复习题 待更新修改
- Ubuntu下口袋妖怪终端主题安装
- c++笔记--数据类型