封装好的的 get 和 post网络请求

封装好的 get 请求和 post 请求 需要时可以直接调用

#import <Foundation/Foundation.h>
@class NetWorkRequest;

@protocol NetWorkRequestDelegate <NSObject>
@optional
- (void)networkRequest:(NetWorkRequest *)request didFinishLoading:(NSData *)data;
- (void)networkRequest:(NetWorkRequest *)request didDownloadProgress:(float)progress;
- (void)networkRequest:(NetWorkRequest *)request didFailWithError:(NSError *)error;

@end

@interface NetWorkRequest : NSObject<NSURLConnectionDataDelegate>
@property (nonatomic,assign) id<NetWorkRequestDelegate> delegate;

// GET请求
- (void)requestForGETWithUrl:(NSString *)urlString;

// POST请求
- (void)requestForPOSTWithUrl:(NSString *)urlString postData:(NSData *)data;

// 取消请求
- (void)cancelRequest;

@end

#import "NetWorkRequest.h"

@interface NetWorkRequest ()
{
    float _totalLength;
}
@property (nonatomic,retain)NSMutableData *receiveData;
@property (nonatomic,retain)NSURLConnection *connection;
@end

@implementation NetWorkRequest

- (void)requestForGETWithUrl:(NSString *)urlString
{
    [self cancelRequest];
    NSURL *url = [NSURL URLWithString:urlString];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"GET"];
    self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)requestForPOSTWithUrl:(NSString *)urlString postData:(NSData *)data
{
    [self cancelRequest];
    NSURL *url = [NSURL URLWithString:urlString];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:data];
    self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)cancelRequest
{
    [_connection cancel];
    self.connection = nil;
}

#pragma mark ------ 网络状态 -------
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    self.receiveData = [NSMutableData data];
    _totalLength = response.expectedContentLength;
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [_receiveData appendData:data];
    float progress = [_receiveData length] / _totalLength;
    
    if ([_delegate respondsToSelector:@selector(networkRequest:didDownloadProgress:)]) {
        
        [_delegate networkRequest:self didDownloadProgress:progress];
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    //数据下载成功
    if ([_delegate respondsToSelector:@selector(networkRequest:didFinishLoading:)]) {
        
        if (_receiveData != nil) {
            [_delegate networkRequest:self didFinishLoading:_receiveData];
        }
    }
    self.receiveData = nil;
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    if ([_delegate respondsToSelector:@selector(networkRequest:didFailWithError:)]) {
        [_delegate networkRequest:self didFailWithError:error];
    }
}

@end
使用步骤

1.在要使用的类中导入

#import "NetWorkRequest.h"
2.初始化一个<pre name="code" class="objc">NetWorkRequest 对象 让他服从 <pre name="code" class="objc">NetWorkRequest 协议
调用中的 get 和 post 请求即可

 
 3.实现所需要的协议的方法 

在代理方法

- (void)networkRequest:(NetWorkRequest *)request didFinishLoading:(NSData *)data

{

//json 解析

NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

//XML解析


}

中实现对请求数据的解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值