使用dataWithContentsOfURL继续获取nil而不是JSON文件:

时间:2016-01-09 00:06:54

标签: ios json nsurl

paper.circle(100, 100, 15);

以上内容会返回以下错误:

For Each sht In ThisWorkbook.Worksheets
  If Format(sht.Range("U2"), "DDDD") = "Saturday" _
    Or Format(sht.Range("U2"), "DDDD") = "Sunday" Then
    sht.Tab.ColorIndex = 6 'yellow
  Else
    sht.Tab.ColorIndex = 5 'blue
  End If
Next

在上述错误之前,我还在控制台中收到以下错误:

NSError* error = nil;

//  load JSON file from the web using url:
NSURL *internetPath = [NSURL URLWithString:url];

NSData *JSONData = [NSData dataWithContentsOfURL:internetPath options:NSDataReadingMappedIfSafe error:&error];

if (!JSONData) {
    NSLog(@"Error = %@", error);
}

我也在我的pList中排除了这样的url:

Error = Error Domain=NSCocoaErrorDomain Code=256 "The file “antimicrobials.json” couldn’t be opened." UserInfo={NSURL=http://spectrum-prod.herokuapp.com/antimicrobials.json}

这曾经很好用,但现在却引起了悲伤。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

一些钥匙似乎是错的。 NSExceptionAllowsInsecureHTTPLoads应为NSTemporaryExceptionAllowsInsecureHTTPLoadsNSExceptionMinimumTLSVersion应为NSTemporaryExceptionMinimumTLSVersion。 试试这个:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>thedomain.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

信用: https://stackoverflow.com/a/31254874/400552

<强>更新 nscurl --ats-diagnostics https://spectrum-prod.herokuapp.com/似乎表明一切都已经过去了。所以,不确定你是否还需要这些。

更新2: 您还可以将详细的网络日志记录添加到应用程序的方案环境变量中:CFNETWORK_DIAGNOSTICS:3

这将打印出控制台中文件的路径。在此日志文件中,您可以找到有关每个请求的大量详细信息以及是否导致错误。

检查http://www.nsscreencast.com/episodes/188-app-transport-security

更新3: 使用NSURLSession,示例如下所示:

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:@"https://spectrum-prod.herokuapp.com/antimicrobials.json"]
          completionHandler:^(NSData *data,
                              NSURLResponse *response,
                              NSError *error) {
            // handle response
 
  }] resume];

NSURLSession上的教程可在此处找到:http://www.raywenderlich.com/51127/nsurlsession-tutorial