我现在正在测试环境中尝试我的应用程序,该应用程序具有在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,然后它就无效了。
答案 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帮助您找到解决方案