2013-05-17 44 views
11
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:///]; 
NSURLRequest *req = [[NSURLRequest alloc]initWithURL:url]; 
NSURLConnection *con = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:YES]; 

Trong dự án của tôi, tôi đã sử dụng sendSynchronousRequest trên NSURLConnection. Nó đôi khi cho tôi gặp tai nạn.Ví dụ yêu cầu không đồng bộ

Vì vậy, tôi chuyển đổi mã này thành AsynchronousRequest. Tôi không thể tìm thấy mã phù hợp.

Ai đó cung cấp cho tôi liên kết hoặc mã bưu điện phù hợp với mã của tôi. Bất kỳ loại gan nào cũng sẽ được đánh giá cao.

+2

Bạn có thể có câu hỏi này đã đóng là quá mở và được địa phương hóa. Tôi sẽ đề nghị bạn mô tả những gì bạn đang cố gắng làm và những gì bạn đã thử và tại sao nó không hoạt động để mọi người có thể trả lời yêu cầu trực tiếp. Có rất nhiều người sẵn sàng và có thể giúp đỡ, nhưng các câu hỏi cụ thể hơn chỉ ra những gì bạn đã thử và lý do tại sao nó không hoạt động có xu hướng là những người có được câu trả lời tốt nhất. – gaige

+0

@gaige Tôi thích cách nó không được đóng :) – Supertecnoboff

Trả lời

20

Có một vài điều bạn có thể làm.

  1. Bạn có thể sử dụng sendAsynchronousRequest và xử lý khối gọi lại.
  2. Bạn có thể sử dụng thư viện AFNetworking, xử lý tất cả yêu cầu của bạn theo kiểu không đồng bộ. Rất dễ sử dụng và thiết lập.

Mã cho phương án 1:

NSURL *url = [NSURL URLWithString:urlString]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (error) { 
    //NSLog(@"Error,%@", [error localizedDescription]); 
    } 
    else { 
    //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
    } 
}]; 

Mã cho phương án 2:

Bạn có thể muốn tải về thư viện & bao gồm nó trong dự án của bạn đầu tiên. Sau đó làm như sau. Bạn có thể theo dõi bài đăng về cách thiết lập here

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]); 
} failure:nil]; 

[operation start]; 
+1

hiện nó chặn tương tác người dùng khi mạng chậm? – Xcode

+0

Tôi đã sử dụng tùy chọn 1 của bạn. Làm thế nào để xử lý nó không thành công? – Xcode

+0

Bạn có thể sử dụng lỗi NSError * trong khối hoàn thànhHandler để xử lý bất kỳ lỗi nào. – Harish

Các vấn đề liên quan