基于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 ...
随机推荐
- angularjs+requirejs整合
通过requirejs的配置让angularJS可以正常运行.以下是配置的步骤: 环境需求 require.js angular.js 有了这两文件,就可以进行下一步了,具体将文件放到哪个目录,可以跟 ...
- jQuery 移除绑定事件
移除事件 unbind(type [,data]) //data是要移除的函数 $('#btn').unbind("click"); //移除click $('#btn') ...
- python3中的range函数
奇怪的现象 在paython3中 print(range(10)) 得出的结果是 range(0,10) ,而不是[0,1,2,3,4,5,6,7,8,9] ,为什么呢? 官网原话: In many ...
- 深入了解JavaScript权威指南
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删.JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等.JavaScript对象除了可以保持自有的 ...
- php新浪云链接mysql与storage
1.首先要有一个新浪云服务器 2.链接数据库获取数据 mysql CREATE TABLE Persons(FirstName varchar(255),LastName varchar(255)); ...
- EL表达式介绍(1)
1. 产生背景: 在MVC体系结构中,JSP页面只是用来显示数据,但JSP脚本中的表达式功能不够强大,它不能直接对隐式对象中某对象的属性进行显示,需要配合 scriptlet才能显示数据,很是麻烦,如 ...
- java.io.IOException: Attempted read from closed stream. 异常,解决
在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决 原因是EntityUti ...
- 【原】Ubuntu下使用teamviewer
想尝试直接使用Xmanager打开Ubuntu桌面版,结果一直存在问题,迂回一下,尝试使用teamviewer解决,结果OK.办法如下: 在Ubuntu中,下载teamviewer,通过Windows ...
- python——3.x的异常处理 请注意了
以前的python2.x的时候:try: fp=urllib.request.urlopen(blogurl) except Exception, e: print ...
- Django——基于类的视图源码分析 一
基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式. 借助于OO和Python中方便的多重继承特性, ...