zoukankan      html  css  js  c++  java
  • 网络请求

    #import <Foundation/Foundation.h>
    
    //定义下载中的block
    typedef void(^ProcessBlock)(NSURLResponse *response,NSData *data,NSError *error);
    //定义下载完成的block
    typedef void(^CompletionBlock)(NSURLResponse *response,NSData *data,NSError *error);
    
    //接受网络连接协议
    @interface CustomConnection : NSURLConnection<NSURLConnectionDataDelegate>
    
    + (CustomConnection *)sendAsyRequest:(NSURLRequest *)request andProcessBlock:(ProcessBlock)processblock andCompletionBlock:(CompletionBlock)completionblock;
    
    @end
    

      

    #import "CustomConnection.h"
    
    @interface CustomConnection ()
    
    @property (nonatomic,strong)NSError *error;
    
    @property (nonatomic,strong)NSURLResponse *response;
    @property (nonatomic,strong)NSMutableData *data;
    
    @property (nonatomic,strong)CompletionBlock completionBlock;//在这里使用的是strong.引用计数加1(有内存管理)
    @property (nonatomic,strong)ProcessBlock processBlock;
    
    @end
    
    
    @implementation CustomConnection
    
    + (CustomConnection *)sendAsyRequest:(NSURLRequest *)request andProcessBlock:(ProcessBlock)processblock andCompletionBlock:(CompletionBlock)completionblock
    {
        CustomConnection * connection  = [[CustomConnection alloc]initWithRequest:request delegate:nil];
        connection.completionBlock = completionblock;
        connection.processBlock = processblock;
        
        [connection start];
        
        return connection;
    }
    
    - (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate
    {
        //指定当前的网络连接工具类的代理对象是自己
        self = [super initWithRequest:request delegate:self];
        if (self) {
            ;
        }
        return self;
    }
    //收到网络连接响应的时候调用的方法
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        self.response = response;
        self.data = [[NSMutableData alloc]init];
    }
    ////收到网络链接发送信息时...
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [self.data appendData:data];
        self.processBlock (self.response,self.data,self.error);
    }
    //收到网络链接结束信息时...
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        self.completionBlock (self.response,self.data,self.error);
    }
    
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        self.error = error;
    }
    
    @end
    

      在使用的时候,

     NSURL *url = [NSURL URLWithString:@"http://www.taopic.com/uploads/allimg/110329/23-11032ZK01593.jpg"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        
        [CustomConnection sendAsyRequest:request andProcessBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
            UIImageView *imageV = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
            imageV.frame = self.view.bounds;
            [self.view addSubview:imageV];
           NSLog(@"下载中") ;
        } andCompletionBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
            NSLog(@"下载完成") ;
            
        }];
    

      

  • 相关阅读:
    利用 img 和 script 发送跨域请求
    tomcat 内存配置
    servlet request.getParamter 有时获取参数为null
    windows本地无法启动sqlserver服务
    mac用virtualbox 装win7联网及分辨率设置
    奇怪的transform bug
    mysql 同时执行多条update语句
    二进制树形算法
    协议栈中使用crc校验函数
    引用布局
  • 原文地址:https://www.cnblogs.com/yinyakun/p/3555795.html
Copyright © 2011-2022 走看看