如何知道响应 - (void)connectionDidFinishLoading:(NSURLConnection *)连接?

时间:2013-02-25 08:50:31

标签: objective-c

- (void)connectionDidFinishLoading:(NSURLConnection *)connection只有一个参数。

连接。

但是,我没有看到任何连接成员可以告诉资源返回的数据是什么。

我检查了一下 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSURLConnection

如果我们这样做 sendSynchronousRequest:returningResponse:error:我们得到回报。

  NSData * response= [NSURLConnection sendSynchronousRequest:URLRequest returningResponse:&URLResponse error:&error];
    NSString * result = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

这里,结果是实际返回的内容。

但是,如果我们异步发送此请求呢?

1 个答案:

答案 0 :(得分:3)

你需要实现更多然后只有一个回调(用于异步调用)。

didReceiveData 中构建缓冲区,然后在完成的事件上使用缓冲区。

像这样:

// in .h NSMutableData *_data;    

-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
{
    _data = [[NSMutableData alloc] init]; // _data being an ivar
}

-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
{
    [_data appendData:data];
}

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
{
    // handle connection error
}

-(void)connectionDidFinishLoading:(NSURLConnection*)connection
{
    // do something with _data


}