2
NSError *error;
NSString *string = [[NSString alloc]
                    initWithContentsOfURL:URL
                    encoding:NSUTF8StringEncoding
                    error:&error];

当我在我的 iPhone 上测试它时,它总是在我打开 wifi 时工作。但是,当我使用 3G 时,我经常得到零。如果我连续尝试 15 次(我有一个更新按钮),我终于得到了想要的结果。

我的问题是,这个问题是在服务器端还是我的代码不稳定?我应该使用不同的方法来获取更安全的数据吗?

4

2 回答 2

1

你没有提供足够的信息来给出一个模糊的答案,但你确实有一些选择。

最重要的是,你有一个“ error”参数,你应该打印出它的结果。您还可以在 NSString 类中使用更好的 API。

将您的代码更改为以下内容:

NSError *error = NULL;
NSStringEncoding actualEncoding;

// variable names in Objective-C should usually start with lower case letters, so change
// URL in your code to "url", or even something more descriptive, like "urlOfOurString"
NSString *string = [[NSString alloc] initWithContentsOfURL:urlOfOurString usedEncoding:&actualEncoding error:&error];
if(string)
{
    NSLog( @"hey, I actually got a result of %@", string);

    if(actualEncoding != NSUTF8StringEncoding)
    {
        // I also suspect the string you're trying to load really isn't UTF8
        NSLog( @"and look at that, the actual encoding wasn't NSUTF8StringEncoding");
    }
} else {
    NSLog( @"error when trying to fetch from URL %@ - %@", [urlOfOurString absoluteString], [error localizedDescription]);
}
于 2013-03-07T01:55:15.810 回答
1

I'm now using STHTTPRequest instead. I recommend this library very much, easy to use yet powerful.

于 2013-03-20T13:34:05.673 回答