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

前提,导入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文件是什么那就放在你将要做网络请求的类里面。

  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface GGRequest : NSObject
  4. /**
  5. * 网络请求方法
  6. *
  7. * @param url 将要访问的链接
  8. * @param param 传入的参数
  9. * @param requestStyle 请求方式
  10. * @param serializer 数据返回形式
  11. * @param success 请求成功后调用
  12. * @param failure 请求失败后调用
  13. */
  14.  
  15. + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
  16. failure:(void (^)(NSError *error))failure;
  17.  
  18. @end

GGRequest.m

  1. #import "GGRequest.h"
  2. #import "AFNetworking.h"
  3. #import "MBProgressHUD+MJ.h"//mj进一步封装的显示进程的类。
  4.  
  5. @implementation GGRequest
  6.  
  7. /**
  8. * 网络请求方法
  9. *
  10. * @param url 将要访问的链接
  11. * @param param 传入的参数
  12. * @param requestStyle 请求方式
  13. * @param serializer 数据返回形式
  14. * @param success 请求成功后调用
  15. * @param failure 请求失败后调用
  16. */
  17. + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
  18. failure:(void (^)(NSError *error))failure
  19. {
  20. // 创建请求 管理者
  21. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  22.  
  23. // 设置序列化器
  24. switch(serializer)
  25. {
  26. case :
  27. {
  28. // manager.requestSerializer = [AFJSONRequestSerializer serializer];
  29. [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];//默认(返回的是json并自动解析成数组或字典)
  30. }break;
  31. case :
  32. {
  33.  
  34. [manager setResponseSerializer:[AFXMLParserResponseSerializer serializer]];//返回的是xml,afn不支持xml解析
  35. }break;
  36. case :
  37. {
  38. // manager.requestSerializer = [AFHTTPRequestSerializer serializer];
  39. [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];//返回的是data并自动解析成数组或字典
  40.  
  41. }break;
  42. }
  43.  
  44. // 3.发送请求
  45. if(requestStyle == )
  46. {
  47. [manager POST:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
  48. {
  49. DLog(@"请求成功");
  50. DLog(@"返回的数据类型是:%@", [responseObject class]);
  51. success(responseObject);
  52.  
  53. } failure:^(AFHTTPRequestOperation *operation, NSError *error)
  54. {
  55. DLog(@"请求失败");
  56. DLog(@"%@", error);
  57.  
  58. }];
  59.  
  60. }
  61. else if(requestStyle == )
  62. {
  63. [manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
  64. DLog(@"请求成功");
  65. DLog(@"返回的数据类型是:%@", [responseObject class]);
  66. DLog(@"%@", responseObject);
  67. success(responseObject);
  68.  
  69. } failure:^(AFHTTPRequestOperation *operation, NSError *error)
  70. {
  71. DLog(@"请求失败");
  72. DLog(@"%@", error);
  73.  
  74. }];
  75.  
  76. }
  77. }
  78.  
  79. @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. 输入格式MultipleInput

    MultipleInput输入格式允许一个job的输入为多个文件夹下的文件(也就是多路径输入),并且不同文件夹下的文件可以实现不同的map逻辑,不过貌似必须使用相同的reduce逻辑. http:// ...

  2. Android中选项卡功能的实现

    Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...

  3. 最新Mac安装CocoaPods详细教程及各种坑解决办法

    网上有很多教程,但要么内容很老,要么不详细,要么各种坑的情况没写.最近买新电脑了,正好要走一遍这些流程,所以写下次教程. 一.安装RVM及更新Ruby 安装RVM的目的是为了更新Ruby,如果你的Ru ...

  4. VirtualBox如何增加CentOS根目录容量

    1.扩充磁盘容量 单位为M,40000为40G VBoxManage modifyhd centos.vdi --resize 40000 2.指定新的磁盘文件 系统 > 右击 > 设置  ...

  5. [GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界 【转】

    http://blog.csdn.net/iispring/article/details/52679185 WebGlobe HTML5基于原生WebGL实现的轻量级Google Earth三维地图 ...

  6. D3.js系列——布局:饼状图和力导向图

    一.饼状图 在布局的应用中,最简单的就是饼状图. 1.数据 有如下数据,需要可视化: , , , , ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些 ...

  7. volatile型变量自增操作的隐患

      用FindBugs跑自己的项目,报出两处An increment to a volatile field isn't atomic.对应报错的代码例如以下: volatile int num = ...

  8. 查看MySQL数据库大小

    查看MySQL数据库大小 1.首先进入information_schema 数据库(存放了其他的数据库的信息) ? 1 2 mysql> use information_schema; Data ...

  9. [转] Google 开源 iOS 应用测试工具:EarlGrey

    Google 开源 iOS 应用测试工具:EarlGrey oschina 发布于: 2016年02月18日 (3评) 分享到:    收藏 +53 3月19日,深圳源创会火热报名中,go>&g ...

  10. OpenGL基础图形编程(八)变换

    八.OpenGL变换 OpenGL变换是本篇的重点内容,它包含计算机图形学中最主要的三维变换,即几何变换.投影变换.裁剪变换.视口变换,以及针对OpenGL的特殊变换概念理解和使用方法,如相机模拟.矩 ...