NSURLConnection始终连接到同一个URL

时间:2012-07-23 20:40:01

标签: objective-c ios nsurlconnection

每当我在一个类中创建一个NSURLConnection时,它总是连接到该类连接的第一个URL。它有一个存储NSURLConnection的ivar conn,这里是连接的方法:

-(void)getMoreProblems
{
    problemsPage++;
    NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://projecteuler.net/problems;page=%d",problemsPage]];
    NSURLRequest *req=[NSURLRequest requestWithURL:url];
    NSLog(@"%p",conn);
    conn=[[NSURLConnection alloc] initWithRequest:req delegate:self];
    NSLog(@"%p",conn);
}

我已经通过NSLog检查了URL的描述和Connection指针它们是不同的,并告诉UIApplication在safari中加载URL。据我所知,它试图加载正确的页面。我也试过POST和GET,但它没有什么区别。可能导致这种情况的原因是什么?

编辑任何人以类似的问题寻找此事:

我的问题最终是我没有重新初始化NSMutableData我在每个页面加载后存储了连接数据。

1 个答案:

答案 0 :(得分:0)

这不是一个真正的答案,但是评论太长了。我发布的代码看不出有什么问题。我将getMoreProblems的代码粘贴到一个新项目中,并添加了查看结果所需的委托方法 - 据我所知,它工作得很好。我可以在结果字符串中看到问题编号从我收到的第一页(从第一次调用getMoreProblems)开始,并在第二次调用getMoreProblems时从问题51开始。我在getMoreProblems方法中添加的唯一内容是最后的if-else子句。 HEre是我使用的代码:

@synthesize window = _window,receivedData;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    problemsPage = 0;
    [self getMoreProblems];
}


-(void)getMoreProblems {
    problemsPage++;
    NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://projecteuler.net/problems;page=%d",problemsPage]];
    NSURLRequest *req=[NSURLRequest requestWithURL:url];
    NSLog(@"%p",conn);
    conn=[[NSURLConnection alloc] initWithRequest:req delegate:self];
    NSLog(@"%p",conn);
    if (conn) {
        self.receivedData = [NSMutableData data];
    } else {
        NSLog(@"The Connection Failed");
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"%@",response.URL);
    [self.receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSLog(@"In connection:didReceiveData:");
    [self.receivedData appendData:data];
}



- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"Succeeded! Received %lu bytes of data",[receivedData length]);
    NSString *page = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",page);
    [self performSelector:@selector(getMoreProblems) withObject:nil afterDelay:5];
}

所以,我无法重现你的问题 - 我猜它在你没有发布的一些代码中的其他地方。