How to download CSV file from server in Objective-C

前端 未结 2 1035
天涯浪人
天涯浪人 2020-12-11 07:13

I\'m developing a new iPhone application, Here i have parsed a \'csv\' file from local, and its working with me. When i try to download the \'csv\' file from the server prog

相关标签:
2条回答
  • 2020-12-11 07:59

    Implement this method:

    -(void)connection:(NSURLConnection *)conn didFailWithError:(NSError *)error
    

    You'll find that you're getting an error of

    Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0xf663f40 {NSUnderlyingError=0xf663de0 "bad URL", NSLocalizedDescription=bad URL}
    

    I've looked into downloading information this way before, and I think one problem you're having is that separate symbols have to be separated with a "+". Also, when pulling an index, you can't pass the "^" symbol as part of the URL. You have to replace it with "%5E".

    So, add this:

    - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        NSLog(@"%@", [error description]);
    }
    

    And change your URL to this:

    NSString *urlString = @"http://download.finance.yahoo.com/d/quotes.csv?s=^GSPC+^IXIC+^dji+^GSPC+^BVSP+^GSPTSE+^FTSE+^GDAXI+^FCHI+^STOXX50E+^AEX+^IBEX+^SSMI+^N225+^AXJO+^HSI+^NSEI&f=sl1d1t1c1ohgv&e=.csv";
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
    

    Now it works for me! I even checked the output .csv file, and it looks good to go! One full quote per line.

    0 讨论(0)
  • 2020-12-11 08:00

    If you plan on fetching more data over the network than this single csv, you could have a look at AFNetworking, it's a great library for doing network operations.

    A working solution would then look a bit like this:

    - (void)getCSVAsynch {
        NSString *unescaped = @"http://download.finance.yahoo.com/d/quotes.csv?s=^GSPC,^IXIC,^dji,^GSPC,^BVSP,^GSPTSE,^FTSE,^GDAXI,^FCHI,^STOXX50E,^AEX,^IBEX,^SSMI,^N225,^AXJO,^HSI,^NSEI&f=sl1d1t1c1ohgv&e=.csv";
        NSURL *url = [NSURL URLWithString:[unescaped stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"CSV: %@", [[NSString alloc] initWithBytes:[responseObject bytes] length:[responseObject length] encoding:NSUTF8StringEncoding]);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Things go boom. %@", [error localizedDescription]);
        }];
        [operation start];
    }
    
    0 讨论(0)
提交回复
热议问题