[iOS微博项目 - 3.3] - 封装网络请求

github: https://github.com/hellovoidworld/HVWWeibo

A.封装网络请求

1.需求

为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网络请求封装成自己的工具类,以后便于更换网络框架。

2.思路

创建一个自定义工具类,提供类方法来实现网络请求

3.实现

 1 //
 2 //  HVWNetworkTool.h
 3 //  HVWWeibo
 4 //
 5 //  Created by hellovoidworld on 15/2/9.
 6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface HVWNetworkTool : NSObject
12
13 /** get方法发送请求 */
14 + (void) get:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error)) failure;
15
16 /** post方法发送请求 */
17 + (void) post:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure;
18
19 /** post方法发送请求(带文件数据) */
20 + (void) post:(NSString *)url parameters:(NSDictionary *) parameters filesData:(NSArray *)filesData success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure;
21
22 @end
 1 //
 2 //  HVWNetworkTool.m
 3 //  HVWWeibo
 4 //
 5 //  Created by hellovoidworld on 15/2/9.
 6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.
 7 //
 8
 9 #import "HVWNetworkTool.h"
10 #import "AFNetworking.h"
11 #import "HVWFileDataParam.h"
12
13 @implementation HVWNetworkTool
14
15 /** get方法发送请求 */
16 + (void) get:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error)) failure {
17     // 创建http操作管理者
18     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
19
20     // 发送请求
21     [manager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
22         if (success) {
23             success(responseObject);
24         }
25     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
26         if (failure) {
27             failure(error);
28         }
29     }];
30 }
31
32 /** post方法发送请求 */
33 + (void) post:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure {
34     // 创建http操作管理者
35     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
36
37     // 发送请求
38     [manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
39         if (success) {
40             success(responseObject);
41         }
42     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
43         if (failure) {
44             failure(error);
45         }
46     }];
47 }
48
49
50 /** post方法发送请求(带文件数据) */
51 + (void) post:(NSString *)url parameters:(NSDictionary *) parameters filesData:(NSArray *)filesData success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure {
52     // 创建http操作管理者
53     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
54
55     // 发送请求
56     [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
57
58         // 读取文件参数
59         for (HVWFileDataParam *fileDataParam in filesData) {
60             [formData appendPartWithFileData:fileDataParam.fileData name:fileDataParam.name fileName:fileDataParam.fileName mimeType:fileDataParam.mimeType];
61         }
62     } success:^(AFHTTPRequestOperation *operation, id responseObject) {
63         if (success) {
64             success(responseObject);
65         }
66     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
67         if (failure) {
68             failure(error);
69         }
70     }];
71 }
72
73 @end
时间: 2024-10-12 21:48:41

[iOS微博项目 - 3.3] - 封装网络请求的相关文章

iOS开发项目篇—35封装网络请求

iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说

[iOS微博项目 - 3.5] - 封装业务

github: https://github.com/hellovoidworld/HVWWeibo   A.封装微博业务 1.需求 把微博相关业务(读取.写微博) 界面控制器不需要知道微博操作细节(例如选择从网络读取还是缓存读取) 2.实现 把微博操作封装成一个工具类 把微博网络请求的参数和返回结果也封装成一个类 3.实现 (1)基础参数类 由于多数请求都需要access_token,所以封装一个参数父类 1 // 2 // HVWBaseParam.h 3 // HVWWeibo 4 //

[iOS微博项目 - 2.5] - 封装授权和用户信息读写业务

github: https://github.com/hellovoidworld/HVWWeibo   A.封装授权业务 1.把app的授权信息移动到HVWWeibo-Prefix.pch中作为公共宏 1 // 授权信息 2 #define HVWAppKey @"3942775926"; 3 #define HVWAppSecret @"cc577953b2aa3aa8ea220fd15775ea35" 4 #define HVWGrantType @"

iOS开发项目篇—36封装微博业务

iOS开发项目篇—36封装微博业务 一.简单说明 1.请求参数面向模型 2.请求结果面向模型 3.对控制器来说应该屏蔽业务细节.不让控制器关心(知道)业务细节,它只需要知道自己在做某个业务 @通过一个专门的业务处理类:处理微博业务细节 说明: 业务:加载新的微博首页数据 实现:给新浪服务器发送一个GET请求 业务:加载更多的首页微博数据 实现1:给新浪服务器发送一个GET请求 实现2:去沙盒中加载以前离线缓存的微博数据  二.实现 1.新建一个微博业务处理类,继承自NSObject 微博业务处理

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS开发项目篇—37封装其他业务

iOS开发项目篇—37封装其他业务 一.简单说明 项目分层的步骤: (1)新建一个模型类封装请求参数 (2)新建一个模型类封装请求结果(返回结果) (3)新建一个业务类封装专一的业务 二.获得用户信息业务的封装 (1)新建一个模型类封装请求参数 查看新浪官方获取用户信息需要哪些请求参数: 封装请求参数的类的代码设计: YYUserInfoParam.h文件 1 // 2 // YYUserInfoParam.h 3 // 4 5 #import <Foundation/Foundation.h>

App 组件化/模块化之路——如何封装网络请求框架

App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-async-http 这些网络请求库很大程度上提高程序猿的编码效率.但是随着业务的发展,App 变得越来越大,我们将这些网络请求库加入到项目中直接使用,对我们业务类的入侵是非常强的.如果要进行业务分离时,这些网络请求代码将是一个阻止我们进一步工作的绊脚石.对开发者来说是非常痛苦的. 因此我们构建的网络请求框

封装网络请求

封装网络请求类便捷, 适合多个地方使用. 第一封装下载方法 前提用Cocoapods或者直接引用第三方AFNetWorking 定义一个类NetWorkingManager, 继承于NSObject A: 在.h中写方法声明 #import <Foundation/Foundation.h> @interface NetWorkManager : NSObject - (void)downLoadWithUrl:(NSString *)url progress:(void(^)(float p

四种网络请求的方式封装网络请求

封装网络请求类便捷, 适合多个地方使用. 第一封装下载方法 前提用Cocoapods或者直接引用第三方AFNetWorking 定义一个类NetWorkingManager, 继承于NSObject A: 在.h中写方法声明 #import <Foundation/Foundation.h> @interface NetWorkManager : NSObject - (void)downLoadWithUrl:(NSString *)url progress:(void(^)(float p