NSURL错误代码1022

时间:2015-09-11 20:58:53

标签: ios objective-c

我有一个RSS阅读器应用程序,它有一个解析器。它运行良好,直到iOS 9测试版。每当我尝试加载数据时,都会收到错误代码1022.这是我建立连接的代码:

- (void)parseRssFeed:(NSString *)url withDelegate:(id)aDelegate {
[self setDelegate:aDelegate];

responseData = [NSMutableData data];
NSURL *baseURL = [NSURL URLWithString:url];


NSURLRequest *request = [NSURLRequest requestWithURL:baseURL];

[[NSURLConnection alloc] initWithRequest:request delegate:self];
}

错误处理程序:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSString * errorString = [NSString stringWithFormat:@"Unable to download XML data (Error code %i )", [error code]];

UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}

我不确定iOS 8和9之间的变化,但由于某种原因,该应用程序不再有效。任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:16)

因此,问题与ATS(App Transport Security)有关,这是iOS 9中的一项新功能,可在连接之前检查URL的真实性。由于我不关心我正在连接的网站的安全性,我完全禁用了ATS。这可以通过将以下代码添加到应用程序的info.plist文件来完成:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

答案 1 :(得分:2)

for swift4在app的info.plist

中添加此内容
<key>App Transport Security Settings</key>
<dict>
<key>Allow Arbitrary Loads</key>
<true/>
</dict>

转到app的info.plist

右键单击并选择&#34;添加行&#34; 并找到&#34;应用传输安全设置&#34;然后单击它。 然后再次右键单击&#34;应用程序传输安全设置&#34;并选择&#34;添加行&#34; 然后找到并点击&#34;允许任意负载&#34;并将其值修改为true。

答案 2 :(得分:0)

我在接受的答案中添加了建议,但仍然没有用。在我的情况下,我不得不将http更改为https,并且仍然有效(即使我没有使用安全的网址)。

答案 3 :(得分:-1)

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

NSString *stringUrl = [NSString stringWithFormat:@"http://rest-service.guides.spring.io/greeting"];
NSString *webStringURL=[stringUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:webStringURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
                                   queue:[NSOperationQueue mainQueue]
                   completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError)
     {
         if (data.length > 0 && connectionError == nil)
         {
NSDictionary *dicYourResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
             NSLog(@"ID: %@", [dicYourResponse objectForKey:@"id"]);
             NSLog(@"Content:%@", [dicYourResponse objectForKey:@"content"]);
         }
     }];
}

我这样做是为了点击url,它的构建成功但在控制台中没有答案。我在info.plist中添加了App transport security和exception Domain,但它对我不起作用。