0
NSURL *url = [NSURL URLWithString:escapedUrlString];
NSString *responseString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 

しかし、タイムアウトを追加したい場合は、代わりにNSURLRequestを使用する必要があることをオンラインで読んでいました。最初のコードは正常に機能しますが、2番目のコードは常に@ ""(nilではなく "")を返します。誰か提案がありますか?

また、NSURLConnectionが実行される可能性のあるあらゆる種類のWeb圧縮を処理するのに対し、NSURLRequestはそれを処理しないことも読んだので、より丸みのあるソリューションを選択したほうがよいと思いました。 http://lists.apple.com/archives/cocoa-dev/2009/Oct/msg01921.html

    NSString *escapedUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *responseString;
    NSURLResponse *response;
    NSError *error;

    NSURLRequest *request = [[NSMutableURLRequest alloc] 
                             initWithURL:[NSURL URLWithString:escapedUrlString]
                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                             timeoutInterval:5]; // 5 second timeout?

    NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    if(responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]){
        NSLog(@"Recieved String Result: %@", responseString);
    } else {
        NSLog(@"Response String is null!");
    }
4

1 に答える 1

0

良い提案をありがとう。コードは今朝魔法のように機能したので、昨夜ウェブサーバーがダウンしたか何かが起こったのだと思います。

于 2010-10-26T14:16:19.240 に答える