今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家。

前提,导入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封装的网络请求工具类【原创】的更多相关文章

  1. 基于AFNetWorking封装一个网络请求数据的类

    1.新建一个继承于NSObject类的类,在.h文件中 #import "AFHTTPRequestOperationManager.h" //定义两个block来接收请求成功和失 ...

  2. 基于Android Volley的网络请求工具

    基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...

  3. swift项目第十天:网络请求工具类的封装

    import UIKit /* 必须先导入头文件:import AFNetworking */ import AFNetworking //MARK:-0:定义枚举:以枚举定义请求网络的get和pos ...

  4. java模板模式项目中使用--封装一个http请求工具类

    需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...

  5. 网络请求工具类WebServiceUtils

    如果对WebService一无所知的话,建议先看看这两篇博客,对你WebService很有帮助. http://blog.csdn.NET/eyu8874521/article/details/912 ...

  6. 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 ...

  7. WebUtils-网络请求工具类

    网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...

  8. iOS 自己封装的网络请求,json解析的类

    基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ...

  9. 微信https请求工具类

    工作中用到的微信https请求工具类. package com.gxgrh.wechat.tools; import com.gxgrh.wechat.wechatapi.service.System ...

随机推荐

  1. 【2-SAT(两次DFS版)】BZOJ1823-[JSOI2010]满汉全席

    [题目大意] 有n个材料,m个评委.每种材料可以被用来做满族菜或汉族菜,m个评委有两种可以让他满意的猜中.问是否可以满足所有评委要求? [思路] 每天只能做三道题,我已经是一个废人了……(葛优躺.jp ...

  2. python3开发进阶-Django框架中form的查看校验方法is_valid()的源码,自定义验证方法

    form表单的校验方法is_valid() 点开我们发现这个函数里面只有两个方法方法,最终返回True or False 我们点进.is_bound属性,里面判断传输的数据不是空和上传文件不是空 点进 ...

  3. Scala零基础教学【81-89】

    第81讲:Scala中List的构造是的类型约束逆变.协变.下界详解 首先复习四个概念——协变.逆变.上界.下界 对于一个带类型参数的类型,比如 List[T]: 如果对A及其子类型B,满足 List ...

  4. sql获取汉字的拼音首字母的函数

    ql获取汉字的拼音首字母   if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...

  5. linux & windows 共享 smbd 部署

    smbd  : yum install samba samba-client samba-swat mount.cifs :  yum -y install cifs-utils  ##挂载nas 文 ...

  6. Font Awesome:图标字体,完全CSS控制

    Font Awesome是一种web font,它包含了几乎所有常用的图标,比如Twitter.facebook等等.用户可以自定义这些图标字体,包括大小.颜色.阴影效果以及其它可以通过CSS控制的属 ...

  7. JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法.分享给大家供大家参考,具体如下: 这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第 ...

  8. Spark1.0.0 编程模型

    Spark Application能够在集群中并行执行,其关键是抽象出RDD的概念(详见RDD 细解),也使得Spark Application的开发变得简单明了.下图浓缩了Spark的编程模型. w ...

  9. 【C/C++学院】0831-类与对象的异常/面试100题1-100

    类与对象的异常 Cpp异常 #include <iostream> #include <string.h> using namespace std; //标识错误的类型 cla ...

  10. 在LoadRunner脚本中实现随机ThinkTime

    一般情况下,我们都是通过Run-Time Settings来设置Think Time(思考时间),可以设置回放脚本时忽略思考时间,或者是设置回放随机的一段思考时间. By default, when ...