【问题标题】:NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)NSURLConnection/CFURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9843)
【发布时间】:2015-01-06 05:43:04
【问题描述】:

我现在正在测试环境中尝试我的应用程序,该应用程序具有在 web 视图中打开 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];

Isn't a common url 和控制台打印这个错误:

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

额外信息

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

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

【问题讨论】:

  • 我刚刚将您的网址粘贴到浏览器中,由于防火墙的原因,加载此类网址时会显示隐私错误。检查您是否有权加载此网址。还要确保 url 正确,并且能够加载到模拟器/设备的 Safari 应用程序中。
  • 我现在无法更改它,即使我再次写@Kampai
  • 无法理解你的意思,能否详细解释一下?
  • 我必须检查 URL 以及是否有权限,但我现在不能。当我这样做时,我会写你的评论,谢谢@Kampai
  • 我不确定是否是导致问题的expires 令牌。我从this post 看到,Amazon S3 中带有 '.' 的“桶”存在问题。提供的一种解决方案是稍微重构 URL:所以https://media.akdemia.com.s3.amazonaws.com/production/.... 变为https://s3.amazonaws.com/media.akdemia.com/production/....。如果我进行了更改,那么我将克服 9843 错误。但随后得到一个未找到文档的错误(可能是因为它已过期?)。

标签: ios uiwebview nsurlconnection


【解决方案1】:

我解决了这个问题,我使用 Ruby on Rails 来实现 API,我在 Gemfile 上将雾和载波 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 伙计们,您对找到解决方案很有帮助

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多