0

- (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];

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

但是如果我们异步发送这个请求呢?

4

1 回答 1

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


}
于 2013-02-25T09:02:41.010 回答