自己封装的网络请求
2016-04-16 00:00
507 查看
摘要: 自己封装的一个网络请求类,调用方便,用着顺手
#import <Foundation/Foundation.h>
//定义枚举
typedef NS_ENUM(NSInteger){
LDT_GET,
LDT_POST
}URLRequestMethod;
//定义返回值block网络请求结果
typedef void(^ResultBlock)(NSData *data,NSURLResponse *response,NSError *error);
@interface LDTNetWorkRequestManager : NSObject
///请求方法
+ (void)requestURL:(NSURL*)url Method:(URLRequestMethod)method Params:(NSDictionary *)params Result:(ResultBlock)resultBlock;
@end
#import "LDTNetWorkRequestManager.h"
@interface LDTNetWorkRequestManager ()
//存储回调block的属性
//@property(nonatomic,copy)ResultBlock block;
@end
@implementation LDTNetWorkRequestManager
//请求方法
+ (void)requestURL:(NSURL *)url Method:(URLRequestMethod)method Params:(NSDictionary *)params Result:(ResultBlock)resultBlock
{
///空的可变字符串
NSMutableString *urlString = [NSMutableString new];
//isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员
if ([url isKindOfClass:[NSURL class]]) {
//拼接url
[urlString appendString:url.absoluteString];
}else if ([url isKindOfClass:[NSString class]]){
[urlString appendString:(NSString *)url];
}
if (urlString.length ==0) {
NSError *error = [NSError errorWithDomain:@"EPA" code:3.1415926 userInfo:@{@"reason":@"你输入的网址不正确"}];
resultBlock(nil,nil,error);
return;
}
//把参数字典转换为字符串
LDTNetWorkRequestManager *manager = [LDTNetWorkRequestManager new];
NSString *paraStr = [manager strFromDict:params];
switch (method) {
case LDT_GET:
{
if (paraStr.length > 0) {
[urlString appendFormat:@"?%@",paraStr];
}
[manager requestURL:[NSURL URLWithString:urlString] ResultBlock:resultBlock];
}
break;
case LDT_POST:
[manager postURL:urlString paraStr:paraStr ResultBlock:resultBlock];
break;
default:
break;
}
}
#pragma mark - GET网络请求
- (void)requestURL:(NSURL *)url ResultBlock:(ResultBlock)block
{
NSURLSessionDataTask *task = [[NSURLSession sharedSession]dataTaskWithURL:url completionHandler:block];
//开始网络请求
[task resume];
}
#pragma mark - POST网络请求
- (void)postURL:(NSString *)urlStr paraStr:(NSString *)paraStr ResultBlock:(ResultBlock)block
{
//创建NSURL
NSURL *url = [NSURL URLWithString:urlStr];
//创建可变请求
NSMutableURLRequest *mRequest = [NSMutableURLRequest requestWithURL:url];
//设置POST方法
[mRequest setHTTPMethod:@"POST"];
//请求体
[mRequest setHTTPBody:[paraStr dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]dataTaskWithRequest:mRequest completionHandler:block];
[dataTask resume];
}
- (NSString *)strFromDict:(NSDictionary *)dict
{
//空数组
NSMutableArray *array = [NSMutableArray new];
for (NSString *key in dict) {
NSString *str = [NSString stringWithFormat:@"%@ = %@",key,dict[key]];
[array addObject:str];
}
//数组拼接字符串
NSString *para = [array componentsJoinedByString:@"&"];
NSLog(@"%@",para);
//返回
return para;
}
@end
#import <Foundation/Foundation.h>
//定义枚举
typedef NS_ENUM(NSInteger){
LDT_GET,
LDT_POST
}URLRequestMethod;
//定义返回值block网络请求结果
typedef void(^ResultBlock)(NSData *data,NSURLResponse *response,NSError *error);
@interface LDTNetWorkRequestManager : NSObject
///请求方法
+ (void)requestURL:(NSURL*)url Method:(URLRequestMethod)method Params:(NSDictionary *)params Result:(ResultBlock)resultBlock;
@end
#import "LDTNetWorkRequestManager.h"
@interface LDTNetWorkRequestManager ()
//存储回调block的属性
//@property(nonatomic,copy)ResultBlock block;
@end
@implementation LDTNetWorkRequestManager
//请求方法
+ (void)requestURL:(NSURL *)url Method:(URLRequestMethod)method Params:(NSDictionary *)params Result:(ResultBlock)resultBlock
{
///空的可变字符串
NSMutableString *urlString = [NSMutableString new];
//isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员
if ([url isKindOfClass:[NSURL class]]) {
//拼接url
[urlString appendString:url.absoluteString];
}else if ([url isKindOfClass:[NSString class]]){
[urlString appendString:(NSString *)url];
}
if (urlString.length ==0) {
NSError *error = [NSError errorWithDomain:@"EPA" code:3.1415926 userInfo:@{@"reason":@"你输入的网址不正确"}];
resultBlock(nil,nil,error);
return;
}
//把参数字典转换为字符串
LDTNetWorkRequestManager *manager = [LDTNetWorkRequestManager new];
NSString *paraStr = [manager strFromDict:params];
switch (method) {
case LDT_GET:
{
if (paraStr.length > 0) {
[urlString appendFormat:@"?%@",paraStr];
}
[manager requestURL:[NSURL URLWithString:urlString] ResultBlock:resultBlock];
}
break;
case LDT_POST:
[manager postURL:urlString paraStr:paraStr ResultBlock:resultBlock];
break;
default:
break;
}
}
#pragma mark - GET网络请求
- (void)requestURL:(NSURL *)url ResultBlock:(ResultBlock)block
{
NSURLSessionDataTask *task = [[NSURLSession sharedSession]dataTaskWithURL:url completionHandler:block];
//开始网络请求
[task resume];
}
#pragma mark - POST网络请求
- (void)postURL:(NSString *)urlStr paraStr:(NSString *)paraStr ResultBlock:(ResultBlock)block
{
//创建NSURL
NSURL *url = [NSURL URLWithString:urlStr];
//创建可变请求
NSMutableURLRequest *mRequest = [NSMutableURLRequest requestWithURL:url];
//设置POST方法
[mRequest setHTTPMethod:@"POST"];
//请求体
[mRequest setHTTPBody:[paraStr dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]dataTaskWithRequest:mRequest completionHandler:block];
[dataTask resume];
}
- (NSString *)strFromDict:(NSDictionary *)dict
{
//空数组
NSMutableArray *array = [NSMutableArray new];
for (NSString *key in dict) {
NSString *str = [NSString stringWithFormat:@"%@ = %@",key,dict[key]];
[array addObject:str];
}
//数组拼接字符串
NSString *para = [array componentsJoinedByString:@"&"];
NSLog(@"%@",para);
//返回
return para;
}
@end
相关文章推荐
- Android Studio使用教程(五):Gradle命令详解和导入第三方包
- Android网络请求库android-async-http介绍
- Java在制作jar包时引用第三方jar包的方法
- Laravel中使用自己编写类库的3种方法
- iOS平台UDID方案比较
- Java桌面程序打包成EXE可执行文件
- 无线路由器的非商业的第三方固件DD-WRT
- 将nginx同时作为负载均衡和Web缓存服务器
- RHEL/CentOS系统的社区维护资源整合
- HTML5 之美:推荐9款优秀的 HTML5 音乐播放器
- RHEL6.2配置本地yum源和第三方源
- Nginx学习(一)安装及基本功能
- Asp.net自定义播放器控件
- 支持QQ2010版协议的pidgin插件
- 比20年工资还重要的......
- 破解思科光模块限制-转自生活小记
- Linux系统下常用RPM包搜索网站
- IOS 开源框架及项目包
- 修复CocoaPods更新错误
- 解决ios静态库中的类别(category)在工程中不能使用