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

前提,导入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. 8.3(java学习笔记)动态编译(DynamicCompiler)与动态运行(DynamicRun)

    一.动态编译 简单的说就是在运行一个java程序的过程中,可以通过一些API来编译其他的Java文件. 下面主要说动态编译的实现: 1.获取java编译编译器 2.运行编译器(须指定编译文件) 获取编 ...

  2. Eclipse编辑jsp卡死解决方案

    使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 windo ...

  3. Python的hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  4. cocos2dx开发中的lua继承与覆盖C++方法

    http://www.litefeel.com/lua-override-userdata/

  5. 2017年最全的30个Android面试题,你将如何回答?

    百度首页 登录 2017年最全的30个Android面试题,你将如何回答? 机翼技术 百家号 03-10 02:32 “三金四银”又是一年一度的跳槽季,相信有不少Android程序员开始摩拳擦掌蠢蠢欲 ...

  6. ylbtech-LanguageSamples-Attibutes(特性)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Attibutes(特性) 1.A,示例(Sample) 返回顶部 “特性”示例 本示例 ...

  7. photo sphere viewer使用图像数据替代路径来生成全景图

    photo sphere viewer是一个js库,用来将全景图片生成360度的全景图像,但是其要求传入的是个路径.如何使用数据代替路径生成图像. 我采用的方法是用img标签生成图像,然后调用img. ...

  8. mysql 5.5多实例部署

    mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成. 1. mysql多实例的原理 2. mysql多实例的特点 3. mysql多实例应用场景 4. mysql5.5多实例部署方法 一. ...

  9. Kubernetes概念介绍和v1版本部署过程

    简介: k8s一个开源的,跨主机管理容器应用集群的编排系统,为应用提供了基础的部署.维护和扩缩容机制. 编排:跨Docker主机同一管理容器集群. 目的 简化开发和运维容器集群的工作. 让开发和运维能 ...

  10. Ajax的原理和应用

    这篇文章中,我将从10个方面来对AJAX技术进行系统的讲解. 1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google sugg ...