封装网络解析方法
来源:互联网 发布:电脑文档加密软件 编辑:程序博客网 时间:2024/06/11 20:16
.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
typedef void(^DataBlock)(NSData * data);
typedef void(^ImageSolveBlock)(UIImage *image);
@interface KX_NetTools : NSObject
//封装的旧方法
+(void)solveDataWithUrl:(NSString *)StringUrl
Method:(NSString *)method
HttpBody:(NSString *)StringBody
revokeBlock:(DataBlock)block;
//新方法
+(void)sslveDataWithUrl:(NSString *)StringUrl
Method:(NSString *)method
HttpBody:(NSString *)StringBody
revokeBlock:(DataBlock)block;
+ (void)SessionDownLoadWithUrl:(NSString *)stringUrl revokeBlock:(ImageSolveBlock)block;
@end
.m
#import "KX_NetTools.h"
@implementation KX_NetTools
+(void)solveDataWithUrl:(NSString *)StringUrl
Method:(NSString *)method
HttpBody:(NSString *)StringBody
revokeBlock:(DataBlock)block{
NSURL * url = [NSURL URLWithString:StringUrl];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:url];
//将所有的字母转化成大写
NSString * SMethod = [method uppercaseString];
if ([@"POST" isEqualToString:SMethod]) {
[request setHTTPMethod:SMethod];
NSData * bodyData = [StringBody dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:bodyData];
}else if ([@"GET" isEqualToString:SMethod]){
}else{
@throw [NSException exceptionWithName:@"KX Param Error" reason:@"方法类型参数错误" userInfo:nil];
return;
}
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
block(data);
}];
}
+ (void)SessionDownLoadWithUrl:(NSString *)stringUrl revokeBlock:(ImageSolveBlock)block{
//1.创建 url
NSURL * url = [NSURL URLWithString:stringUrl];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:url];
//2.创建回话
NSURLSession *session = [NSURLSession sharedSession];
//3.创建任务
NSURLSessionDownloadTask * task = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSData * ImageData = [NSData dataWithContentsOfURL:location];
UIImage * image = [UIImage imageWithData:ImageData];
//从子线程回到主线程进行界面更新
dispatch_async(dispatch_get_main_queue(), ^{
block(image);
});
}];
//启动
[task resume];
}
- 封装网络解析方法
- 网络解析封装类
- 网络解析封装
- 网络:XML 解析封装
- 网络:封装下载方法
- 网络请求的封装方法
- React Native网络状态解析及封装
- 解析xml几个方法的简单封装
- C# HttpWebRequest网络常用方法封装
- C# HTTP网络常用方法封装
- 对NSURLSession进行网络请求方法封装
- Swift网络请求于数据解析简单封装
- iOS网络开发——解析与封装JSON数据
- iOS 自己封装的网络请求,json解析的类
- 网络数据解析及加载本地 缓存封装
- 同步异步网络请求封装以及数据JSON解析
- iOS 自己封装的网络请求,json解析的类
- RxJava2+Retrofit2实现网络请求和解析封装
- iOS隐藏状态栏
- CRC8(8位循环左移)算法的实现
- 如何写出无法维护的代码
- deep learning之PCA in 2D matlab 实现
- QlikView通过svgReader扩展件制作地理热图
- 封装网络解析方法
- epoll的事件类型
- Python选择语句
- 查询数据可以用的函数
- 我的第一个博客
- javascript apply/call解读
- QT学习资源
- bzoj1692【Usaco2007 Dec】队列变换
- 发送GET请求,二级级连下拉菜