技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

异步请求HTTP

代码:

复制代码
@interface HttpProcessor : NSObject <NSURLConnectionDataDelegate>
{
    NSMutableData *buffer;
}

@property BOOL finished;
@property (strong, nonatomic) NSString *html;
@end

@implementation HttpProcessor
@synthesize finished;
@synthesize html;

-(id)init
{
    if (self) {
        finished = NO;
    }
    
    return self;
}

// 开始接收响应
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    finished = NO;
    buffer = [[NSMutableData alloc] init];
}

// 接收ing , 可能多次调用
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [buffer appendData:data];
}

// 结束响应
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    finished = YES;
    html = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
    //NSLog(@"%@", html);
    NSLog(@"OK");
}
@end

void request(NSString *urlString)
{
    NSLog(@"BEGIN");
    // make request object
    NSURL *url = [[NSURL alloc]initWithString:urlString];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
    [request setHTTPMethod:@"GET"];
    [request setTimeoutInterval:10];
    
    // send request
    HttpProcessor *processor = [[HttpProcessor alloc]init];
    [NSURLConnection connectionWithRequest:request delegate:processor];
}
复制代码

 代码块:

复制代码
void request(NSString *urlString)
{
    NSLog(@"BEGIN");
    // make request object
    NSURL *url = [[NSURL alloc]initWithString:urlString];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
    [request setHTTPMethod:@"GET"];
    [request setTimeoutInterval:10];
    // send request
    [NSURLConnection
     sendAsynchronousRequest:request
     queue:[NSOperationQueue mainQueue]
     completionHandler:
        ^(NSURLResponse *response, NSData *result, NSError *error)
        {
            //只会进入一次,方法内部已经实现了Buffer作用
            NSString *html = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
            NSLog(@"html = %@", html);
        }
     
     ];
}
复制代码

参考:

http://www.tuicool.com/articles/2Yru6f

 

posted on   codestyle  阅读(497)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2013-10-08 google jam 比赛题(设计有问题)
点击右上角即可分享
微信分享提示