gpt4 book ai didi

ios - NSURLConnection 的分块传输编码有哪些替代方案

转载 作者:技术小花猫 更新时间:2023-10-29 10:56:19 25 4
gpt4 key购买 nike

我已经检查了与此相关的其他问题,但唯一的答案是“使用 ASIHTTPRequest”,因为它不再被开发 我想问一下人们在使用什么替代方案,同时致力于我们的 SDK 从服务器接收数据时,我在 NSURLConnection 中遇到了很多奇怪的行为。

我们追踪到 NSURLConnection 不能很好地处理分 block 编码中的响应。或者至少我们在这里阅读了这个问题 NSURLConnection and "chunked" transfer-coding

一些开发者说在 iOS 5 中它变得更好,我们需要确保我们的 SDK 至少向后兼容 iOS 4.3。

我想确认这实际上是 NSURLConnection 中的一个问题,以及人们是如何处理它的。

到目前为止,我发现的所有替代方案都是基于 NSURLConnection 的,我假设这样的方案会有同样的缺陷。 ASIHTTPRequest 实际上确实有效,因为它的基础略低于 NSURLConnection,但我们正在寻找替代方案,因为它不再受支持。

查看的其他库列表是:Restkit,共享工具包LRRestyAFNetworking,TTURLRequest

我知道这里有类似的问题 Is RESTKit a good replacement for ASIHTTPRequest?在这里 ASIHTTPRequest alternative但是这两种解决方案都基于 NSURLConnection。

编辑:我注意到我在帖子开头指出了错误的问题,所以更新了。它指向 2008 年的一个线程,我见过类似的线程,但没有一个是最近的线程。

最佳答案

NSURLConnection 支持分 block 传输。我用它们。

  1. 定义一些 Prop :

    NSMutableData * responseData;
    NSURLConnection * connection;
  2. 建立连接

    NSURL *url = [NSURL URLWithString:@"...."];
    self.responseData = [[NSMutableData alloc] initWithLength:0] ;
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
  3. 为已建立的连接注册回调方法

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    // You may have received an HTTP 200 here, or not...
    [responseData setLength:0];
    }
  4. 注册你的“chunk received”回调方法

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSString* aStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

    NSLog(@"This is my first chunk %@", aStr);

    }
  5. 注册您的“连接完成”回调:

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];
    }
  6. 最后,注册您的“连接失败”回调:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Something went wrong...");
}

关于ios - NSURLConnection 的分块传输编码有哪些替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com