swift网络请求封装

swift中网络请求库的封装(Alamofire+HandyJSON) swift中网络请求库的封装(Alamofire+HandyJSON) 我们用swift语言来写iOS的程序,会用Alamofire+HandyJSON来取代AFNetworking+MJExtension,怎么样封装成正确姿势来发起网络请求,我个人封装一个,有待优化的地方,还请指正,话不多说,我们上代码。 这里我们需要先拓展一下Alamofire中的DataRequest类 extension DataRequest { //处理接口中返回的data是对象的时候 data:{},这里在请求方法中利用了 阅读详情
//
//  CSHTTPTool.swift
//  Test
//
//  Created by CSX on 2017/9/26.
//  Copyright © 2017年 宗盛商业. All rights reserved.
//

import UIKit

//使用系统的请求方法处理的请求基类。之后的请求处理都可以直接调用这个,然后进行部分参数的传入处理就可以请求。
class CSHTTPTool: NSObject {
    //单例
    static let share = CSHTTPTool()
    
    // MARK:- get请求
    func getWithPath(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
        var i = 0
        var address = path
        if let paras = paras {
            for (key,value) in paras {
                if i == 0 {
                    address += "?\(key)=\(value)"
                }else {
                    address += "&\(key)=\(value)"
                }
                i += 1
            }
        }
        let url = URL(string: address.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)
        let session = URLSession.shared
        let dataTask = session.dataTask(with: url!) { (data, respond, error) in
            if let data = data {
                if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments){
                    success(result)
                }
            }else {
                failure(error!)
            }
        }
        dataTask.resume()
    }
    
    // MARK:- post请求
    func postWithPath(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
        var i = 0
        var address: String = ""
        if let paras = paras {
            for (key,value) in paras {
                if i == 0 {
                    address += "\(key)=\(value)"
                }else {
                    address += "&\(key)=\(value)"
                }
                i += 1
            }
        }
        let url = URL(string: path)
        var request = URLRequest.init(url: url!)
        request.httpMethod = "POST"
        print(address)
        request.httpBody = address.data(using: .utf8)
        let session = URLSession.shared
        let dataTask = session.dataTask(with: request) { (data, respond, error) in
            if let data = data {
                if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) {
                    success(result)
                }
            }else {
                failure(error!)
            }
        }
        dataTask.resume()
    }
}

使用方法举例:

 CSHTTPTool.share.getWithPath(path: "字符串样式的url路径地址", paras: nil, success: { (data) in
            print("成功","\n", data)
        }) { (error) in
            print("失败", error)
        }




 

Swift 2.3 【封装网络请求业务类 AFNetworking/ Alamofire】 本文描述 Swift 发送网络请求的业务类写法。提供 AFNetworking 和 Alamofire 两种框架网络请求。 其实两个框架本质一样,均出自一个作者,安装可到 github 去下载或者使用 CocoaPods 集成。 阅读详情

相关推荐

Swift 网络请求Moya框架简单二次封装

Swift Moya Alamofire 网络请求 封装

u011831211的专栏 4113

swift网络请求封装(Moya)

swift最新网络请求封装,使用moya进行数据请求,对返回的数据进行了模型转化,将返回的数据直接转化为model类型,方便好用,赶快试试吧!

范佐佐的博客 4040

iOS网络请求工具oc版,swift版基于AFNetworking的简单封装

1.为什么要封装 对于AFNetworking的使用,相信大多数的公司都会用到,毕竟开源框架,安全高效.为了提高效率和代码的可维护性,我们就要二次封装AFN. 2,以前遇到问题 一个老项目,需要进行IPV6的迁移(虽然老版本的AFN也支持IPV6),但是方法变了,之前没有封装AFN,项目中用到AFN请求的地方有很多,接口上千,那么AFN出现的地方就上千个.更新AFN后,不支持老方法了,需要用

luyangMVP的博客 914

Swift -《从0到1 - 5》:封装网络请求工具类(Alamofire + Moya + SwiftyJSON)和链式封装

在OC开发中网络请求通常都使用AFNetworking,在Swift虽然也可以使用,但是推荐使用Swift语法实现的网络请求库Alamofire。 通常大家会对请求库进行一次或多次封装,方便维护,我也不另外。刚开始参考了很多文章,最终决定使用Alamofire +Moya + SwiftyJSON 实现网络请求工具类和API管理类 本篇末尾介绍另一种通过链式封装Alamofire的实现方式 GitHub Demo 地址 Alamofire是一个使用Swift开发的网络请求库,其开发团队是AFNet.

iotjin的专栏 8576

swift4.2网络请求的三种封装

对于swift4.2的网络请求的封装。包含链式,类AFN及对moya的封装。封装的功能包含:1.一次性处理请求指示器HUD 2.一次性处理请求状态码及错误弹窗 3.登录过期自动跳转到登录页等。 4.可以处理所有接口都要使用的公共参数。

SwiftHttp:swift语言封装网络请求框架

#SwiftHttp ##1. 概述 swift语言封闭方便使用的Http请求,只要简单的POST方法调用,传入url和请求参数字典就可以了。 ##2. 功能特性 1) 整个应用共享单一队列 严重依赖网络连接的应用应该优化他们的网络并发连接数。十分不幸的是,现在还没有网络库可以正确的完成这些功能。让我来举个例子说明如果你不去优化或者控制网络的并发连接数会发生什么。 假如你正在上传一系列的图片(比如Color和 Batch)到服务器。大多数的移动网络(3G)不允许一个给定的IP地址超过两个的并发的http请求。这就是说,在你的设备上,3G网络下,你不能同时打开超过两个的并发HTTP请求。EDGE网络就更差了,大多数情况下你甚至不能打开超过一个的连接。这个限制在传统的wifi的情况下是相当高的(6个)。但是,你的设备并不总是连接到Wifi下,你应该为受限制的网络环境考虑。在

iOS swift Alamofire+HandyJSON网络框架封装

iOS swift Alamofire+HandyJSON网络框架的封装

weixin_38400324的博客 1551

swift-基于AFNetworking的网络请求封装

WCFNetworking,是一套基于AFNetworking 3.0.0封装的网络库,提供了更高层次的抽象和更方便的调用方式,请求回调的数据可以进行缓存处理.

Swift版的网络请求封装

最近开始学swift,真的是欲罢不能啊。感觉比oc写起来顺手多了。呐,今天呢,和大家分享一下swift版的网络请求库Alamofire,相当于oc里的AFNetworking,用起来不要太爽哦!!!1.还是和往常一样,cocoapods导入第三方库Alamofire2.建一个管理类,继承于NSObject3.创建单例:private let NetRequestShareInstance = Net

岁月静好,善待时光。 2213

swift-一个对AFN网络框架的简单封装具有网络请求过程的日志打印功能

一个对AFN网络框架的简单封装,具有网络请求过程的日志打印功能

swift 网络请求框架

本网络框架基于swift,对AF进行二次封装实现底层请求与业务逻辑分离,框架实现功能:数据缓存,日志输出,请求控制,请求参数、返回数据拦截,错误,code分析等。框架支持block跟delegate两种请求方式,block适用简单请求,适用方便,代码简洁易懂。delegate适用一些精细化请求,可以对请求参数、返回数据进行拦截以供检查,检测出错可自动取消请求。同时框架还提供了精细化的日志输出,code检测,以及基于YYCache的数据缓存等,基本能满足您的各种业务需求。

Swift封装AFNetworking网络请求

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33743248的博客 136

相控阵多功能雷达工作模式识别技术综述

本文综述了相控阵雷达工作模式识别技术的研究进展。首先介绍了相控阵雷达的典型工作模式分类及其信号特征参数,包括搜索模式(VS、RWS、TWS)、跟踪模式(STT、MTT、TAS)和其他模式(SAM、SAR)等。随后重点阐述了基于信号特征的识别方法,包括时域特征(PRI分析、脉冲幅度包络、数据率)、频域特征(载频变化、调制方式)和混合特征分析方法。最后讨论了当前技术面临的挑战与发展趋势,包括复杂信号环境下的识别难题、新型雷达技术的适应需求以及深度学习技术的应用前景。该领域的研究对电子侦察和威胁评估具有重要意义。

Grow into a more wonderful you 1795

Swift-利用AFN封装网络请求

一般在一个项目中,网络请求都封装成一个单例,以确保整个项目的网络请求 session 是同一个.单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供.通过cocoaPods 导入第三方框架01-切换到项目目录cd 项目名称02-初始化Podspod install03-打开 Pods 文件open Podfile04-编辑 Podfile# 设置支持最低平台 platform :ios

Mazy's Blog 2917

HWSD全球土壤数据下载、处理与提取完整指南

全球尺度的科学研究与工程项目中,土壤数据是必不可少的基础底图,而HWSD(和谐世界土壤数据库)凭借其统一的分辨率与属性标准,成为农业区划、生态模型、土地利用变化和水资源评估等领域的通用数据源。深入理解其“栅格存编号、数据库存属性”的核心原理,是高效使用这套数据的关键。通过掌握MDB数据库结构、属性字段含义以及栅格与属性表的关联方法,研究者可以将原始数据转化为可用的研究底图。无论你是需要提取特定区域的土壤属性,还是进行面积统计与点位采样,合理的处理流程都能显著提升工作效率。本文从下载注册开始,一步步梳理数据清

weixin_29056781的博客 313

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 184

swift + Alamofire 网络请求封装

用法: APISessionManager.default.request("xx/xx/", method: .get, headers: nil, parameters: nil) { [weak self ](response: [String : Any]) in } failureHandler: { (Error) in } APISession // // APISession.swift /.

DongStone的专栏 888

微信小程序使用TCP通信

最终目的:在微信小程序内实现对局域网发起TCP通信实现步骤:建立TCP服务 + 小程序发起通信。

Big_YiFeng的博客 5612

Swift3.0 网络请求二次封装

网络请求封装基于Alamofire,数据解析使用SwiftyJSon,用法详见GitHub, 本文只做较简单的Get,Post封装和二次封装,项目中适合请求管理… 经验来自:我们公司后台架构师,要改变后台数据的返回字段和返回格式,所以感觉二次封装必要性还是比较大的! // 网络请求一级封装 import UIKit import Alamofire import SwiftyJSONen

七月、代码君 617

RTOS与Linux功能差异与应用场景全面对比

在嵌入式系统的开发中,操作系统的选择至关重要。和是两种广泛应用的操作系统,它们在功能、设计目标以及应用领域中各具优势。随着嵌入式系统的不断发展,已成为嵌入式行业的大趋势。那么,这两者到底有什么不同呢?

硬核科技 400

东北大学计算机预推免(双非友好)

东北大学,个人觉得在985里面对双非比较友好,而且学校的计算机专业实力也比较强,上岸难度不算很大,可以重点关注一下。学校复试审核的时间比较早,拿到复试资格之后,一定要留意报名系统首页中计算机学院的信息,学校也会在全国各地不同时间安排面试,可以根据自己的情况选择一个合适的时间前去面试,并且有对应面试场次的QQ群,信息会在群里面发布。面试成绩会在预推免系统中直接公布,但是是否拟录取不会公布,需要考生自行判断,今年计算机学院录取线定在了86分左右,最终递补下来,好像录取到了84分左右。

D1379951481的博客 3120

IOS 开发 AFNetworking 网络工具-网络请求的三次封装 Swift版

标题// // NetworkTool.swift // // Created by zhouyu on 16/1/25. // Copyright © 2016年 mac All rights reserved. //import UIKit import AFNetworkingenum HMHTTPClientType: String { case GET = "GET"

高级软件开发工程师--周玉的博客 1169

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 218

Swift之网络请求框架封装

该篇文章内容大致都是说明内容,无代码模块 在项目开发过程中,经常会使用到第三方的框架,最多的无非是网络请求框架 AFN、ASI、还有使用Swift写的Alamofire框架 如果将这些第三方框架的请求放置在Controller中,在更换第三方框架时,整个框架都将在报错。 所以在开发过程中,要对第三方框架进行二次封装,屏蔽Controller与这些第三方框架之间的耦合 开发人员进行二次封装

Francis-ChinaFeng 2530

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 529

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Swift5.0 Alamofire网络请求的二次封装

Alamofire结合SwiftyJSON、ObjectMapper二次封装网络请求Alamofire直接上代码吧单例方法:请求类:YRequestManager扩展请求方法:post、get、upload扩展私有方法,封装请求请求数据返回响应方法AFSErrorInfo结构体 和 YAPITargetType协议protocolbaseModel代码实例1说明 Alamofire AFNet...

仰望星空的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 正则表达式的基本用法说明
下一篇: mac终端命令大全介绍
Cao_Shixin攻城狮
博客等级 码龄10年 710粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值