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

时间:2014-11-10 00:27:07

标签: ios uiwebview nsurlconnection

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

不是常见的网址,控制台会打印此错误:

  

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

额外信息

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

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

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,我使用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会正确生成网址https://s3.amazonaws.com/media.akdemia.com/production/ ....而不是https://media.akdemia.com.s3.amazonaws.com/production/ ....

感谢@Kampai和@pbasdf帮助您找到解决方案