基于AFNetworking封装的网络请求工具类【原创】
今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家。
前提,导入AFNetworking框架,
关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改成如下即可:
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"image/png",@"text/html",nil];
GGRequest.h
#define JSON 100
#define XML 101
#define DATA 102
#define kPOST 200
#define kGET 201
为了方便你的使用,建议你把这几个宏定义放在pch文件中,如果不知道pch文件是什么那就放在你将要做网络请求的类里面。
- #import <Foundation/Foundation.h>
- @interface GGRequest : NSObject
- /**
- * 网络请求方法
- *
- * @param url 将要访问的链接
- * @param param 传入的参数
- * @param requestStyle 请求方式
- * @param serializer 数据返回形式
- * @param success 请求成功后调用
- * @param failure 请求失败后调用
- */
- + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
- failure:(void (^)(NSError *error))failure;
- @end
GGRequest.m
- #import "GGRequest.h"
- #import "AFNetworking.h"
- #import "MBProgressHUD+MJ.h"//mj进一步封装的显示进程的类。
- @implementation GGRequest
- /**
- * 网络请求方法
- *
- * @param url 将要访问的链接
- * @param param 传入的参数
- * @param requestStyle 请求方式
- * @param serializer 数据返回形式
- * @param success 请求成功后调用
- * @param failure 请求失败后调用
- */
- + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
- failure:(void (^)(NSError *error))failure
- {
- // 创建请求 管理者
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // 设置序列化器
- switch(serializer)
- {
- case :
- {
- // manager.requestSerializer = [AFJSONRequestSerializer serializer];
- [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];//默认(返回的是json并自动解析成数组或字典)
- }break;
- case :
- {
- [manager setResponseSerializer:[AFXMLParserResponseSerializer serializer]];//返回的是xml,afn不支持xml解析
- }break;
- case :
- {
- // manager.requestSerializer = [AFHTTPRequestSerializer serializer];
- [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];//返回的是data并自动解析成数组或字典
- }break;
- }
- // 3.发送请求
- if(requestStyle == )
- {
- [manager POST:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
- {
- DLog(@"请求成功");
- DLog(@"返回的数据类型是:%@", [responseObject class]);
- success(responseObject);
- } failure:^(AFHTTPRequestOperation *operation, NSError *error)
- {
- DLog(@"请求失败");
- DLog(@"%@", error);
- }];
- }
- else if(requestStyle == )
- {
- [manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
- DLog(@"请求成功");
- DLog(@"返回的数据类型是:%@", [responseObject class]);
- DLog(@"%@", responseObject);
- success(responseObject);
- } failure:^(AFHTTPRequestOperation *operation, NSError *error)
- {
- DLog(@"请求失败");
- DLog(@"%@", error);
- }];
- }
- }
- @end
基于AFNetworking封装的网络请求工具类【原创】的更多相关文章
- 基于AFNetWorking封装一个网络请求数据的类
1.新建一个继承于NSObject类的类,在.h文件中 #import "AFHTTPRequestOperationManager.h" //定义两个block来接收请求成功和失 ...
- 基于Android Volley的网络请求工具
基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...
- swift项目第十天:网络请求工具类的封装
import UIKit /* 必须先导入头文件:import AFNetworking */ import AFNetworking //MARK:-0:定义枚举:以枚举定义请求网络的get和pos ...
- java模板模式项目中使用--封装一个http请求工具类
需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...
- 网络请求工具类WebServiceUtils
如果对WebService一无所知的话,建议先看看这两篇博客,对你WebService很有帮助. http://blog.csdn.NET/eyu8874521/article/details/912 ...
- Java之网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)
到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi import java.util.List; import org.apache.http.HttpSta ...
- WebUtils-网络请求工具类
网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...
- iOS 自己封装的网络请求,json解析的类
基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ...
- 微信https请求工具类
工作中用到的微信https请求工具类. package com.gxgrh.wechat.tools; import com.gxgrh.wechat.wechatapi.service.System ...
随机推荐
- 输入格式MultipleInput
MultipleInput输入格式允许一个job的输入为多个文件夹下的文件(也就是多路径输入),并且不同文件夹下的文件可以实现不同的map逻辑,不过貌似必须使用相同的reduce逻辑. http:// ...
- Android中选项卡功能的实现
Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...
- 最新Mac安装CocoaPods详细教程及各种坑解决办法
网上有很多教程,但要么内容很老,要么不详细,要么各种坑的情况没写.最近买新电脑了,正好要走一遍这些流程,所以写下次教程. 一.安装RVM及更新Ruby 安装RVM的目的是为了更新Ruby,如果你的Ru ...
- VirtualBox如何增加CentOS根目录容量
1.扩充磁盘容量 单位为M,40000为40G VBoxManage modifyhd centos.vdi --resize 40000 2.指定新的磁盘文件 系统 > 右击 > 设置 ...
- [GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界 【转】
http://blog.csdn.net/iispring/article/details/52679185 WebGlobe HTML5基于原生WebGL实现的轻量级Google Earth三维地图 ...
- D3.js系列——布局:饼状图和力导向图
一.饼状图 在布局的应用中,最简单的就是饼状图. 1.数据 有如下数据,需要可视化: , , , , ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些 ...
- volatile型变量自增操作的隐患
用FindBugs跑自己的项目,报出两处An increment to a volatile field isn't atomic.对应报错的代码例如以下: volatile int num = ...
- 查看MySQL数据库大小
查看MySQL数据库大小 1.首先进入information_schema 数据库(存放了其他的数据库的信息) ? 1 2 mysql> use information_schema; Data ...
- [转] Google 开源 iOS 应用测试工具:EarlGrey
Google 开源 iOS 应用测试工具:EarlGrey oschina 发布于: 2016年02月18日 (3评) 分享到: 收藏 +53 3月19日,深圳源创会火热报名中,go>&g ...
- OpenGL基础图形编程(八)变换
八.OpenGL变换 OpenGL变换是本篇的重点内容,它包含计算机图形学中最主要的三维变换,即几何变换.投影变换.裁剪变换.视口变换,以及针对OpenGL的特殊变换概念理解和使用方法,如相机模拟.矩 ...