Swift3.0封装 AFN 的 GET&POST网络请求
//
// PSNetWorkManage.swift
// WeiBoSwift
//
// Created by 思 彭 on 16/9/25.
// Copyright © 2016年 思 彭. All rights reserved.
// import UIKit
import AFNetworking // Swift的枚举支持任意数据类型,不需要,分隔
enum PSHTTPMethod{
case GET
case POST
} /// 网络管理工具
class PSNetWorkManage: AFHTTPSessionManager { // 单例
static let shared = PSNetWorkManage() // MARK:- get请求
func getWithPath(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) { var i =
var address = path
if let paras = paras { for (key,value) in paras { if i == { address += "?\(key)=\(value)"
}else { address += "&\(key)=\(value)"
} i +=
}
} 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 =
var address: String = "" if let paras = paras { for (key,value) in paras { if i == { address += "\(key)=\(value)"
}else { address += "&\(key)=\(value)"
} i +=
}
}
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()
}
}
Swift3.0封装 AFN 的 GET&POST网络请求的更多相关文章
- 基于AFN封装的带缓存的网络请求
给大家分享一个基于AFN封装的网络请求 git: https://github.com/zhouxihi/NVNetworking #带缓存机制的网络请求 各类请求有分带缓存 , 不带缓存, 可自定义 ...
- Swift3.0:Get/Post同步和异步请求
一.介绍 Get和Post区别: Get是从服务器上获取数据,Post是向服务器发送数据. 对于Get方式,服务端用Request.QueryString获取变量的值,对于Post方式,服务端用Req ...
- 基于AFNetworking 3.0的取消已发出的网络请求
一般情况下主动取消请求的需求不会太多 除非以下几种情况 1.比如电商应用为例 请求频繁,数据量大 2.对性能的要求比较高 3.网络环境比较差 当一个用户打开一个界面 看到的却是漫长的等待框 这时候用户 ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了
在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...
- 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类
这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...
- 在 JS 中使用 fetch 更加高效地进行网络请求
在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...
- iOS - NSURLSession 网络请求
前言 NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0) @interface NSURLSession : NSObject @available(iOS ...
- Android 网络请求详解
我们知道大多数的 Android 应用程序都是通过和服务器进行交互来获取数据的.如果使用 HTTP 协议来发送和接收网络数据,就免不了使用 HttpURLConnection 和 HttpClient ...
- 最简单的iOS网络请求
做iOS开发,说到网络请求,大家可能都不约而同的提到AFN,可以说大家的网络请求都是用AFN封装而成,AFN的强大易用的确很好. 但是版本升级就会出现一些问题,所以就自己基于iOS原生封装了一个网络请 ...
随机推荐
- Android之Json
Servlet部分 public class JasonAction extends HttpServlet { private JsonService service; public void do ...
- org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException
org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener method ...
- mySql数据重复数据去重
1.问题来源:数据中由于并发问题,数据存在多次调用接口,插入了重复数据,需要根据多条件删除重复数据: 2.参考博客文章地址:https://www.cnblogs.com/jiangxiaobo/p/ ...
- Comet OJ - Contest #11 A 水题
Code: #include <bits/stdc++.h> #define N 3000000 using namespace std; char str[N]; int main() ...
- jQuery系列(十二):事件委托
1.什么是事件委托 通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这 ...
- 1-1RGB色彩模式
http://www.missyuan.com/thread-350716-1-1.html RGB色彩模式 CTRL+O 打开文件 双击{O->Open} F8/菜单-窗口-信息 调出 ...
- Oracle数据库本地和远程导入、导出
exp本地导出与imp本地导入 exp命令: 1 exp username/psw@TEST file=d:test.dmp full=y 2 exp username/psw@TEST file=d ...
- 使用Git上传文件至Github
记录一下怎么把文件上传到Github,因为之前都存在本地,没上传过Github,自己以后看起来也有个记忆.因为我自己已经安装好Git和注册好Github账号了,设置好了SSH key.这部分不懂的,就 ...
- MySql、PostgreSql、SqlServer三种数据库的造数存储过程实例
主要实例:把临时表tmp_table数据插入到目标表target_table 一.MySql造数存储过程实例 mysql造数 -- 第一步,创建临时表 CREATE TEMPORARY TABLE I ...
- 【log4j】log4j.properties 文件示例
# 下面的文件内容是写程序长期要用的,放在这里留个底#Output information(higher than INFO) to stdout and file.info/debug/error ...