同步异步网络请求封装以及数据JSON解析
来源:互联网 发布:傲娇熊直播 知乎 编辑:程序博客网 时间:2024/05/17 17:57
方法声明部分
#import <Foundation/Foundation.h>/* 协议 */@protocol NetworkHandleDelegate <NSObject>- (void)didFinishLoading:(id)result;@end@interface NetworkHandle : NSObject#pragma mark - 封装: 通过delegate向外传值@property (nonatomic, assign) id <NetworkHandleDelegate> delegate;- (void)asynGETWithURL:(NSString *)urlString;+ (void)sendAsynGETWithURL:(NSString *)urlString delegate:(id<NetworkHandleDelegate>)delegate;#pragma mark - 封装:通过block向外传值+ (void)asynGETJSONWithURL:(NSString *)urlString completion:(void(^)(id))block;+ (void)asynPOSTJSONWithURL:(NSString *)urlString httpBody:(NSString *)bodyString completion:(void(^)(id result))block;@end
实现部分
#import "NetworkHandle.h"@interface NetworkHandle ()@end@implementation NetworkHandle/* 将网络请求进行封装 */+ (void)asynGETJSONWithURL:(NSString *)urlString completion:(void(^)(id result))block { /* 1.转码 */ NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; /* 2.创建URL对象 */ NSURL *url = [NSURL URLWithString:enCodingStr]; /* 3.创建请求 */ NSURLRequest *request = [NSURLRequest requestWithURL:url]; /* 4.创建链接接受数据 */ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { /* 5.数据解析 */ NSError *error = nil; id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; /* 6.通过block将result值返回出去 */ block(result); }];}#pragma mark - Block传值+ (void)asynPOSTJSONWithURL:(NSString *)urlString httpBody:(NSString *)bodyString completion:(void(^)(id result))block { /* 1.创建URL */ NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; /* 2.创建请求 */ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; block(result); }];}- (void)asynGETWithURL:(NSString *)urlString { NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:enCodingStr]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { id result = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil]; /* 通过协议方法将 result传递到外部 */ [self.delegate didFinishLoading:result]; }];}+ (void)sendAsynGETWithURL:(NSString *)urlString delegate:(id<NetworkHandleDelegate>)delegate { NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:enCodingStr]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { id result = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil]; /* 通过协议方法将 result传递到外部 */ [delegate didFinishLoading:result]; }];}@end
0 0
- 同步异步网络请求封装以及数据JSON解析
- ajax同步异步请求与JSON数据解析
- 同步网络请求 类封装,包括get请求和post请求,可选择是否进行JSON解析
- IOS 同步异步请求JSON数据
- Json解析网络请求数据
- Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)
- C#中解析json以及网络请求
- 同步/异步网络请求
- 网络请求同步异步
- AsyncTask 异步任务 + json 解析 网络数据
- Android--使用原生技术实现ListView(原生技术实现网络异步请求,解析json数据)
- 异步请求网络json
- Volley请求的简单封装,以及applicaation/json数据请求
- okhttp 第三方 网络数据请求 异步get请求 和异步post请求 同步请求
- iOS 网络数据请求和Json 解析
- jQuery.ajax异步变成同步的请求JSON数据例子
- iOS 自己封装的网络请求,json解析的类
- iOS 自己封装的网络请求,json解析的类
- Hibernate映射解析——七种映射关系(比较详细)
- toString()方法
- LayoutParams定义的长宽、位置等和getLeft和getWidth之间的关系
- 第11章 杂项(Loose Ends)
- umbraco 集成多说评论组件
- 同步异步网络请求封装以及数据JSON解析
- 数据结构面试题1.2.5-在二元树中找出和为某一值的所有路径
- 第12, 13, 14章
- 图像匹配之序贯相似性检测法匹配
- Windows下Setting Up a Project(建立一个工程)
- 2016最新Android安卓短信拦截(过Android4.4和Android5.0和Android5.1)源码
- leetcode笔记:Gas Station
- HTML5和HTML4之间的区别
- 我的乘法分析