ios - NSURLConnection/CFURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9843)

标签 ios uiwebview nsurlconnection

我现在正在测试环境中试用我的应用程序,该应用程序具有在 web View 中打开 URL 的功能,但现在测试时,生产数据库中的文件 URL 来自亚马逊并具有以下格式:

self.url = @"https://media.akdemia.com.s3.amazonaws.com/production//uploads/report_notification/report/3827/Corte_de_Notas_de-QUINTO_A_O_DE_CIENCIAS_A.pdf?AWSAccessKeyId=AKIAI2R6DMWPFKJPDVWQ&Signature=wwq2kCTVsOlA/Sc/xIT108XF8/0%3D&Expires=1447112397" 

我无法通过以下方式打开它:

NSURL *myUrl = [NSURL URLWithString:self.url];
NSURLRequest *myRequest = [NSURLRequest requestWithURL:myUrl];

[self.webView loadRequest:myRequest];

不是一个常见的 url 并且控制台打印此错误:

NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)

额外信息

在我的应用程序中,我有一个报告列表,当它向 API 请求每个报告的 URL 时,它会生成一个 URL 列表。

如果我请求来自控制台的 URL 为每个 URL 生成相同的 URL 但不同的 Expires 数字并且所有这些 URL 都正常工作,而如果我打印 API 为应用返回的 JSON,我可以看到所有 URL (无论属于哪个报告)都具有相同的 Expires 编号。我不知道这是否会影响 URL 然后它不起作用。

最佳答案

我解决了这个问题,我使用 Ruby on Rails 实现 API,并且我在 Gemfile 上将 fog 和 carrierwave gem 版本更改为 1.9.0 和 0.10.0(您必须运行 bundle install 才能更新)。

使用相同的 fog_credentials

config.fog_credentials = {
      :provider               => 'AWS',       # required
      :aws_access_key_id      => 'AKIAI2R6DMWPFKJPDVWQ',       # required
      :aws_secret_access_key  => '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',       # required
}
    config.fog_directory  = 'media.akdemia.com'                     # required
    config.fog_public     = false
    config.cache_dir = "#{Rails.root}/tmp/uploads"
    config.fog_authenticated_url_expiration = 1.year
    config.storage = :fog

然后 API 会正确生成 URL https://s3.amazonaws.com/media.akdemia.com/production/ .... 而不是 https://media.akdemia.com.s3.amazonaws.com/production/ ....

谢谢@Kampai 和@pbasdf,你们帮助找到了解决方案

关于ios - NSURLConnection/CFURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9843),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835015/

相关文章:

iphone - 禁用 UIWebView 自动播放视频

ios - Swift 管理内存

ios - 无法将 cookie 发送到 WebView Objective C

ios - 如何将 <<< 元素返回到 eureka 中而不是页面中的表单?

iphone - 尝试将 NSData 从 NSURLConnection 写入文件后的 SIGABRT(无法识别的选择器)

ios - 从缓存响应中停止 NSURLConnection sendAsynchronousRequest

objective-c - 使用 NSURLConnection 可取消的 NSOperation

iphone - 除了为 iOS 6.1 设置 UIApplication idleTimerDisabled 以简单地表示用户已经主动做了某事之外,还有其他选择吗?

iphone - 在 WebView 中单击链接时加载本地 HTML 文件

Android 的 addJavascriptInterface 在 iOS 中的等价物